投稿日 | : 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