MSFlexGridを使っているのですが、「VB6作成」
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
'押されているマウスのボタンを離したとき
Dim ColCokor As Integer '離したときの行位置
Dim RowCokor As Integer '離したときの列位置
Dim ColFocu As Integer '押したときの行位置
Dim RowFocu As Integer '押したときの列位置
Dim xCol As Integer, yRow As Integer '座標のカウント
With MSFlexGrid1
ColCokor = .MouseCol '離したときの行位置
RowCokor = .MouseRow '離したときの列位置
ColFocu = .Col: .SetFocus '押したときの行位置
RowFocu = .Row: .SetFocus '押したときの列位置
'列の色変更
For xCol = ColFocu To ColCokor
.Row = RowFocu
.Col = (xCol)
GridCollColor
Next
'行の色変更
For yRow = RowFocu - 1 To RowCokor
.Col = ColFocu
.Row = (yRow)
GridCollColor
Next
End With
End Sub
Private Sub GridCollColor()
'マウスでセルをクリックしたら:黒-反転-白
With MSFlexGrid1
Select Case .CellBackColor
Case Is = &H0
.CellBackColor = &H80000008 'クリックしたところを黒く
Case Is = &H80000008
.CellBackColor = &H0 'クリックしたところを白く
End Select
End With
End Sub
これだと、縦5横2と引いた場合
■■
■□
■□
■□
■□
となり全て黒くなりません全て色を変えるにはどうしたらいいでしょうか?
今は、縦と横で引いているのですが度地下化に絞って引いたほうが分かりやすいでしょうかご教授お願いいたします
仕様:
クリックし選択した範囲全体の色を変更する
RowFocu - 1 は色塗り位置が被るため1増す下げています。
多分、MSFlexGrid1のRowとColの値がおかしくなってるんじゃないかと・・
簡単に考えるとこんな感じかな。
(GridCollColorは投稿にあったロジックそのまま)
Private Sub MSFlexGrid1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim xCol As Integer, yRow As Integer '座標のカウント
Dim sCol As Integer, sRow As Integer '開始位置
With MSFlexGrid1
' 開始座標の取得
sRow = .Row
sCol = .Col
For yRow = sRow To .RowSel
For xCol = sCol To .ColSel
.Row = yRow
.Col = xCol
Call GridCollColor
Next
Next
End With
End Sub
ツイート | ![]() |