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
試してみてください。
テストしてないので、ごめんなさいですけど(^^;
>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
そのままだとできませんでしたがTextmatrix(.Row,1)にすることでできました!
ぶぶさん本当にありがとうございました。レベル低くてすみませんm(_ _)m
>そのままだとできませんでしたがTextmatrix(.Row,1)にすることでできました!
エクセルでも数学の行列でも、その他グリッド系コントロールでも、
横が『行』で Row、縦が『列』で Col(Column)
うちの和英辞典やgoo辞書だと
>Row:列,並び,横列
>Col(Column):縦の行,段
日本語だと縦行…横行(?)縦列、横列…全部言っちゃうかなぁ(汗)
プログラムだと
>MSFlexGridでクリックした列の一行目に値が入っている場合は、
と言われるとぶぶさんの解釈のほうが正解になりそう。
縦とか横とか付けて説明した方が良いんでしょうね。(^^)
そうですね。自分で読み返してもちょっと迷ってしまいました(>▽<)
今度から気をつけますm(_ _)m
ツイート | ![]() |