Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'1列目の場合
If Target.Column = 1 Then
MsgBox "実行しました"
Cancel = True 'アクティブを解除
End If
End Sub
「1列目」をダブルクリックすると、メッセージを表示することができます。
「1列目」をダブルクリック
「1列目」以外をダブルクリックしても、実行されません。
「1列目」以外をダブルクリック
実行されないですね。
1列目だけ実行できました。
行を指定して実行
ダブルクリックで実行する「行」を指定してしています。
「1行目」をダブルクリックした場合に実行
「1行目」をダブルクリックした場合に実行するVBAコードです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'1行目の場合
If Target.Row = 1 Then
MsgBox "実行しました"
Cancel = True 'アクティブを解除
End If
End Sub
「1行目」をダブルクリックすると、メッセージを表示することができます。
「1行目」をダブルクリック
「1行目」以外をダブルクリックしても、メッセージは表示されないです。
「1行目」以外をダブルクリック
メッセージは表示されないですね。
「1行目」だけに限定できました。
セル範囲を指定して実行
ダブルクリックで実行する「セル範囲」を指定してみます。
「A1」をダブルクリックした場合に実行
「A1」をダブルクリックした場合に実行してみます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'「A1」と重なるところが「なし」ではない場合
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "実行しました"
Cancel = True 'アクティブを解除
End If
End Sub
「Intersect」の使い方です。
「InterSect」の使い方
「InterSect」は2つの範囲で、重なるセル範囲を返します。
2つの範囲で、重なるセルがない場合は、「Nothing」を返します。
今回は、「If Not Intersect(範囲1, 範囲2) Is Nothing Then」となっています。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'「A1:B2」と重なるところが「なし」ではない場合
If Not Intersect(Target, Range("A1:B2")) Is Nothing Then
MsgBox "実行しました"
Cancel = True 'アクティブを解除
End If
End Sub
「A1:B2」の範囲内である「A1」をダブルクリックすると、メッセージを表示することができます。
「A1」をダブルクリック
「A1:B2」の範囲内である「B2」をダブルクリックしても、メッセージを表示することができます。
「B2」をダブルクリック
「A1:B2」の範囲外の「C3」をダブルクリックした場合は、メッセージは表示されません。
「A1:B2」以外をダブルクリック
メッセージは表示されませんね。
実行する範囲を「A1:B2」に限定できました。
とびとびのセル範囲を指定して実行
ダブルクリックで実行するセル範囲を「とびとび」で指定してみます。
「A1」もしくは「A3」をダブルクリックした場合に実行
「A1」もしくは「A3」をダブルクリックした場合に実行するVBAコードです。
セル範囲を「Union」で結合するところがポイントです。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'「A1」と「A3」を結合する
Dim A
Set A = Union(Range("A1"), Range("A3"))
'「A1、A3」と重なるところが「なし」ではない場合
If Not Intersect(Target, A) Is Nothing Then
MsgBox "実行しました"
Cancel = True 'アクティブを解除
End If
End Sub
「A1」をダブルクリックすると、メッセージが表示されます。
「A1」をダブルクリック
「A3」をダブルクリックしても、メッセージを表示することができます。
「A3」をダブルクリック
「A1とA3」以外の「A5」をダブルクリックした場合は、メッセージは表示されません。
「A1とA3」以外をダブルクリック
メッセージは表示されません。
実行する範囲を「A1」と「A3」に限定できました。
ちょっと応用
ちょっと応用で、値を簡単に転記したい場合に使えます。
ダブルクリック時に値を転記する
ダブルクリック時に値を転記してみます。
やりたいのは、「A」列をダブルクリックして、「商品」~「値段」の値を転記したい、ということです。
ダブルクリックで値を転記したい
ダブルクリック時に転記するVBAコードは、こんな感じになります。
ダブルクリック時に転記するVBAコード
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'「A1:A7」と重なるところが「なし」ではない場合
If Not Intersect(Target, Range("A1:A7")) Is Nothing Then
'ダブルクリックした行を、転記する
Target.Resize(, 3).Copy Range("E2")
Cancel = True 'アクティブを解除
End If
End Sub