あなたの習慣について教えてください!!

エクセルVBAでダブルクリックしたら色を反転させたのですが、
指定していないセルはダブルクリックしてもこのVBAは発動させたくないので
発動させるセルの指定方法を教えてください。指定するセルは複数個所あり点在しています。
また、下記のコードでもう少し簡素化できるところがあればご指導ください。
宜しくお願いいたします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'背景反転
With Target.Interior
If .ColorIndex = xlNone Then
.Color = vbBlack
Else
.Color = xlNone
End If
End With
Cancel = True

'文字反転
With Cells(Target.Row, Target.Column).Font
If .Color = vbBlack Then
.Color = vbWhite
ElseIf .Color = vbWhite Then
.Color = vbBlack
End If
Cancel = True
End With
End Sub

A 回答 (2件)

こんにちは



>発動させるセルの指定方法を教えてください
一番最初に「指定範囲内にあるかどうか」を判断するようにすれば良いでしょう。

以下では、いかがでしょうか?
※ 対象とする範囲を、変数 targetArea として、通常の文字列で指定しておきます。
(例では、D10:E11、H12:I14、J6:K7 の三か所になっています)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const targetArea = "D10:E11,H12:I14,J6:K7" ' 指定範囲

If Intersect(Target, Range(targetArea)) Is Nothing Then Exit Sub
Cancel = True

With Target.Interior
If .ColorIndex = xlNone Then .ColorIndex = vbBlack _
Else .ColorIndex = xlNone
End With

With Target.Font
If .Color = vbBlack Then .Color = vbWhite
If .Color = vbWhite Then .Color = vbBlack
End With
End Sub
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます!VBA初心者なので助かります。
しかし試してみたのですが、指定したセルだけ反応は違うのですが色が反転しません?

お礼日時:2022/04/06 13:52

文字反転のwithの外側にIF文か何かで


Targetを使って範囲指定する感じじゃないでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2022/04/06 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています