VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -