【VBA】クリックしたセルの色を変える方法


今回は、クリックしたセルの色を変える方法です。

何に使えるの??って感じですが、書いていきますw

↓実演動画
https://youtu.be/TNX0Du5tvKE

今回は、シート名の右クリックして、「コードの表示」をクリックしてください。
今回は、その中にコードを書いていきます。

ソースコードは下記の通りです。


'ダブルクリックの処理
 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    Target.Interior.Color = vbRed

 End Sub

  '右クリックの処理
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    Target.Interior.Color = vbGreen

 End Sub

'左クリックの処理
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Column > 9 Then Exit Sub

    Select Case Target.Interior.ColorIndex
    Case Is = xlNone
        Target.Interior.ColorIndex = 5
    Case Else
        Target.Interior.ColorIndex = xlNone
    End Select

End Sub

詳細を説明します。

①ダブルクリックの判定

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

ダブルクリックの判定には、「Worksheet_BeforeDoubleClick」プロシージャを使用します。

Worksheet_BeforeDoubleClickについては、下記のサイトが参考になると思います。
https://vbabeginner.net/detect-cell-double-clicks/

Target.Interior.Color = vbRed

Targetには、ダブルクリックされたセルの位置が入っていますので、そのセルの色を赤色に変更しています。

②右クリックの判定

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

右クリックの判定には、「Worksheet_BeforeRightClick」プロシージャを選択します。

Worksheet_BeforeRightClickについては、下記のサイトが参考になると思います。
https://vbabeginner.net/worksheet_beforerightclick/

Target.Interior.Color = vbGreen

Targetには、右クリックされたセルの位置が入っていますので、そのセルの色を緑色に変更しています。

③左クリックの判定

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

左クリックの判定には、「Worksheet_SelectionChange」プロシージャを使用します。

Worksheet_SelectionChangeについては、下記のサイトが参考になると思います。
http://www.excel.studio-kazu.jp/mag2/backnumber/mm20040727.html

If Target.Column > 9 Then Exit Sub

これは、反映する範囲を制御するために書いてます。
列の10行目以降のセルを選択した場合は、処理を終了しています。


Select Case Target.Interior.ColorIndex
    Case Is = xlNone
        Target.Interior.ColorIndex = 5
    Case Else
        Target.Interior.ColorIndex = xlNone
End Select

Case文で、クリックしたセルが塗りつぶし無しであれば、ColorIndexで番号を指定して色を変更し、それ以外であれば、塗りつぶし無しに変更しています。

以上が、クリックしたセルの色を変える方法でした。