投稿時間:2007/08/03(Fri) 16:51 投稿者名:tea
Eメール:
URL :
タイトル:コンボボックスで"連番"とした場合にMSFlexGridに4から順に番号をつけたいのですが
また質問させていただきます。 コンボボックスで"連番"を意味する"連"を選択した場合に選手氏名欄に 記載してある人数分だけMSFlexGridのeGridUniformnumberという列に自 動的に最初の番号を4にして以降は順に番号をつけたいのです。 選手の最低人数は5名、最大人数は18名ですがいつも18名とは限り ません。 下記に自分で書いてみたコードを乗せますが、 fghPlayers(TeamIndex).Target.TextMatrix(ixPlayer, eGridUniformnumber) = 4 + m でエラーが出て「オブジェクト変数またはWithブロック変数が設定されて いません。」と出ます・・・。
教えてください。 どうかよろしくお願いします。
Private Sub UserControl_Initialize() 'ローカル変数宣言' Dim ixTeam As Long Dim ixPlayer As Long Dim i As Long '連番作業の為に追加--- Dim TeamIndex As Long Dim m As Integer m = 0 '--------------------- '' 本来は、UserMode でしか動かさないコードもある。 '' しかし、なぜか UserControl.Ambient.UserMode が機能しないのでエラー無視で対処している。 '' UserControl_Terminate も同様。 '' 未来を指定できないように。 dtpTournamentDate.MaxDate = Now '' ヘルパーの実行開始。 Set fghPlayers0 = New FlexGridHelper Set fghPlayers1 = New FlexGridHelper For ixTeam = 0 To 1 With teamControl("cboEditor", ixTeam) '"連番"という意味の"連"を先頭に加える。--- .AddItem "連" .ListIndex = 0 'もしcboEditorで一番先頭の選手が連番の"連"を選択した場合には選手 '氏名欄にある人数分だけMSFlexGridの先頭番号を4からはじめて以降は '順に番号をつける。 '最大選手人数はA&Bチームともに18名だが、いつも18名とは限らない。 If .ListIndex = 0 Then '選手氏名を1番から最大人数まで For ixPlayer = 1 To bbPlayerMax 'はじめの4に+1を加算していく For m = 0 To 18 With Game.Team(TeamIndex).Player(ixPlayer) '背番号' fghPlayers(TeamIndex).Target.TextMatrix(ixPlayer, eGridUniformnumber) = 4 + m End With Next Next End If '----------------------------------------- '繰り返し処理:1から99 For i = 1 To 99 '追加' .AddItem CStr(i) Next End With With fghPlayers(ixTeam) '初期化' .Init teamControl("grdPlayers", ixTeam), teamControl("txtEditor", ixTeam) 'ユニフォームナンバー' .SetEditorFromControl eGridUniformnumber, teamControl("cboEditor", ixTeam) 'キャプテン選択 .SetColStatuses eGridCaption, Array(sPiCaptainMark, "") 'スタメン選択 .SetColStatuses eGridSM, Array(sPiSMMark, "") .NextDirectionToRight = False ' grdPlayers_Design .Target End With Next '' スターティングメンバーのクリック順を、現在のものを適用。 On Error Resume Next For ixTeam = 0 To 1 'コレクション型のインスタンスが生成されてオブジェクトに格納' Set nPiSMClickOrder(ixTeam) = New Collection With Game.Team(ixTeam) '繰り返し処理:1から最大人数' For ixPlayer = 1 To bbPlayerMax 'もし、選手がスタメンの場合' If .Player(ixPlayer).IsStartingMember Then '追加' nPiSMClickOrder_Add ixTeam, ixPlayer i = i + 1 End If Next End With Next End Sub
|