MSFlexGridでセルの色を条件付で変更するには?

解決


昔のあゆサイコ-  2005-06-13 23:35:31  No: 122539

MSFlexGridでクリックした列の一行目に値が入っている場合は、そのクリックし
たセルの色を赤にし前にクリックしたセルを白に、入っていない場合には色を変
えないというプログラムを作っているのですが、下のようにすると一行目の色が
変わってしまうし、ほかに方法が思い浮かびません。何か方法はありませんでし
ょうか?環境はVB6.0です。
Private Sub MSFGrid_Click()
    Dim Col1, Col2, Row1, Row2 As Integer
    With MSFGrid
    .Col = 0
    If .Text = "" Then
    Else
        Col1 = .Col
        Row1 = .Row
        .Col = Col2
        .Row = Row2
        .CellBackColor = vbWhite
        .Col = Col1
        .Row = Row1
        .CellBackColor = vbRed
        Col2 = Col1
        Row2 = Row1
    End If
    End With


ぶぶ  2005-06-14 00:52:35  No: 122540

試してみてください。
テストしてないので、ごめんなさいですけど(^^;
>Private Sub MSFGrid_Click()
>    Dim Col1, Col2, Row1, Row2 As Integer
この定義の仕方だとRow2だけがintegerで、前者はバリアントになっちゃいますけど・・・
>    With MSFGrid
>    .Col = 0
クリックした列の情報がクリアされてますけど・・・
>    If .Text = "" Then
>    Else
>        Col1 = .Col
>        Row1 = .Row
>        .Col = Col2
>        .Row = Row2
>        .CellBackColor = vbWhite
>        .Col = Col1
>        .Row = Row1
>        .CellBackColor = vbRed
>        Col2 = Col1
>        Row2 = Row1
>    End If
>    End With

Private Sub MSFGrid_Click()
     Dim Col1 as integer,Row1  as integer

    With MSFGrid
        ' クリックされた位置の保存
        Col1 = .Col
        Row1 = .Row

        ' クリックした位置の1行目の確認
        If .Textmatrix(1,Col1) = "" Then
        Else
            ' セルの背景を白に
            .Col = 0
            .Row = 0
            .Colsel = .Cols-1
            .Rowsel = .rows-1
            .Fillstyle = flexfillrepeat
            .CellBackColor = vbWhite
            .Fillstyle = flexfillsingle
            ' クリックしたセルを赤に
            .Col = Col1
            .Row = Row1
            .CellBackColor = vbRed
        End If
    End With


昔のあゆサイコー  2005-06-14 02:11:04  No: 122541

そのままだとできませんでしたがTextmatrix(.Row,1)にすることでできました!
ぶぶさん本当にありがとうございました。レベル低くてすみませんm(_ _)m


特攻隊長まるるう  2005-06-14 02:32:50  No: 122542

>そのままだとできませんでしたがTextmatrix(.Row,1)にすることでできました!

エクセルでも数学の行列でも、その他グリッド系コントロールでも、
横が『行』で Row、縦が『列』で Col(Column)
うちの和英辞典やgoo辞書だと
>Row:列,並び,横列
>Col(Column):縦の行,段
日本語だと縦行…横行(?)縦列、横列…全部言っちゃうかなぁ(汗)

プログラムだと
>MSFlexGridでクリックした列の一行目に値が入っている場合は、
と言われるとぶぶさんの解釈のほうが正解になりそう。
縦とか横とか付けて説明した方が良いんでしょうね。(^^)


昔のあゆサイコー  2005-06-14 23:46:27  No: 122543

そうですね。自分で読み返してもちょっと迷ってしまいました(>▽<)
今度から気をつけますm(_ _)m


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加