大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、ダブルクリック時に実行するには、シートイベントの「Worksheet_BeforeDoubleClick」を使います。ダブルクリック時に実行できれば、簡単に値を転記できたりしますので、どんどん使っていきましょう。

はじめに

この記事では、ダブルクリック時に実行するシートイベントについて、ご紹介します。

ダブルクリック時に実行するには、「Worksheet_BeforeDoubleClick」を使います。

ダブルクリックしたセル範囲は、「Target」で取得することができます。

実行したあとに、セルをアクティブ状態から解除するには、「Cancel = True」を使います。

ダブルクリックで実行する「セル範囲を設定」する方法として、

  • 行や列を指定:「Row」や「Column」
  • セル範囲を指定:「Intersect」

という感じで設定することができます。

ダブルクリックで実行できれば、簡単に値を転記したりすることができますので、どんどん使っていきましょう。

では、ダブルクリック時に実行するシートイベントについて、解説していきます。

この記事で紹介すること

  • ダブルクリック時に実行するシートイベントの使い方

目次から見たい項目へ移動すると便利ですよ。

目次

「ダブルクリック」時に実行する

「ダブルクリック」時に実行するには、「シートイベント」の「Worksheet_BeforeDoubleClick」を使います。

「Worksheet_BeforeDoubleClick」を使う

「シートモジュール」に「Worksheet_BeforeDoubleClick」を作成していきます。

「ダブルクリック」のイベントを作成

「シートモジュール」で「Worksheet」を選択します。

「シートモジュール」で「Worksheet」を選択します

「シートモジュール」で「BeforeDoubleClick」を選択します。

「シートモジュール」で「BeforeDoubleClick」を選択します

「Worksheet_BeforeDoubleClick」を作成できます。

「Worksheet_BeforeDoubleClick」を作成できました

「Worksheet_BeforeDoubleClick」を作成できました。

簡単なコードを記述してみます。

ダブルクリック時にメッセージを表示

ダブルクリック時にメッセージを表示するVBAコードです。

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

    MsgBox "実行しました"

End Sub

VBE画面で見るとこんな感じです。

ダブルクリック時にメッセージを表示するVBAコードです

「Sheet1」の「B2」をダブルクリックすると、メッセージを表示できます。

セルをダブルクリックしてみる

「Sheet1」の「B2」をダブルクリックすると、メッセージを表示できます

「Sheet1」の「B2」をダブルクリックして、メッセージを表示できました。

「Target」でダブルクリックのセル範囲を取得

「Target」でダブルクリックのセル範囲を取得することができます。

「Target」でダブルクリックしたセル範囲を取得

「Target」でダブルクリックしたセルのアドレスを取得します。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    
    'ダブルクリックしたセルのアドレスを表示
    MsgBox Target.Address

End Sub

VBE画面でみるとこんな感じです。

「Target」でダブルクリックしたセルのアドレスを取得します

「Sheet1」の「B2」をダブルクリックすると、「$B$2」のアドレスを表示することができます。

ダブルクリックしてみる

「B2」をダブルクリックすると、「$B$2」のアドレスを表示することができます

「B2」をダブルクリックして、「$B$2」のアドレスを表示することができました。

「Cancel = True」にしてアクティブを解除

「Cancel = False」や「Cancel」の記述を省略すると、実行後にセルがアクティブとなってしまいます。

「Cancel = False」だとアクティブになる

「Cancel = False」のVBAコードです。

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

    MsgBox "実行しました"

    'アクティブのまま
    Cancel = False

End Sub

VBE画面で見るとこんな感じです。

「Cancel = False」の場合で、ダブルクリックしてみます

セルをダブルクリックして、メッセージを表示したあと、閉じます。

セルをダブルクリックして、メッセージを表示したあと、閉じます

セルはアクティブ状態となります。

セルはアクティブ状態となります

セルはアクティブ状態となりました。

セルがアクティブ状態のままだと、次の操作がやりづらいですので、アクティブを解除してみましょう。

「Cancel = True」にしてアクティブを解除

「Cancel = True」でダブルクリックを実行したあとのセルの「アクティブを解除」します。

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

    MsgBox "実行しました"

    'アクティブを解除する
    Cancel = True

End Sub

VBE画面で見るとこんな感じです。

「Cancel = True」でダブルクリックを実行したあとのセルの「アクティブを解除」します

「Sheet1」のセルをダブルクリックすると、アドレスが表示されますので、OKをクリックして閉じます。

「Sheet1」のセルをダブルクリックすると、アドレスが表示されますので、OKをクリックして閉じます

セルのアクティブを解除した状態にできます。

セルのアクティブを解除した状態にできました

セルのアクティブを解除した状態にできました。

アクティブ状態を解除できると、次の操作がやりやすいです。

基本、「Cancel = True」を使っていきましょう。

列を指定して実行

ダブルクリックで実行する「列」を指定してみます。

「1列目」をダブルクリックした場合に実行

「1列目」をダブルクリックした場合に実行します。

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列目だけ実行できました。

行を指定して実行

ダブルクリックで実行する「行」を指定してしています。

「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行目」以外をダブルクリック

「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つの範囲で、重なるセル範囲を返します。

「InterSect」は2つの範囲で、重なるセル範囲を返します

2つの範囲で、重なるセルがない場合は、「Nothing」を返します。

2つの範囲で、重なるセルがない場合は、「Nothing」を返します

今回は、「If Not Intersect(範囲1, 範囲2) Is Nothing Then」となっています。

なので、「Nothing」では「ない」となりますので、範囲1と範囲2の重なる部分がある場合に、実行します。

「A1」をダブルクリックすると、メッセージを表示することができます。

「A1」をダブルクリック

「A1」をダブルクリックすると、メッセージを表示することができます

「A1」以外をダブルクリックしても、メッセージは、表示されないです。

「A1」以外をダブルクリック

「A1」以外をダブルクリックしても、メッセージは、表示されません

メッセージは、表示されないですね。

「A1」に限定することができました。

複数のセル範囲を指定して実行

ダブルクリックで実行するセル範囲を「複数」指定してみます。

「A1:B2」の範囲内をダブルクリックしたときに実行

「A1:B2」の範囲内をダブルクリックしたときに実行するVBAコードです。

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」の範囲内である「A1」をダブルクリックすると、メッセージを表示することができます

「A1:B2」の範囲内である「B2」をダブルクリックしても、メッセージを表示することができます。

「B2」をダブルクリック

「A1:B2」の範囲内である「B2」をダブルクリックしても、メッセージを表示することができます

「A1:B2」の範囲外の「C3」をダブルクリックした場合は、メッセージは表示されません。

「A1:B2」以外をダブルクリック

「A1:B2」の範囲外の「C3」をダブルクリックした場合は、メッセージは表示されません

メッセージは表示されませんね。

実行する範囲を「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」をダブルクリック

「A1」をダブルクリックすると、メッセージが表示されます

「A3」をダブルクリックしても、メッセージを表示することができます。

「A3」をダブルクリック

「A3」をダブルクリックしても、メッセージを表示することができます

「A1とA3」以外の「A5」をダブルクリックした場合は、メッセージは表示されません。

「A1とA3」以外をダブルクリック

「A1とA3」以外の「A5」をダブルクリックした場合は、メッセージは表示されません

メッセージは表示されません。

実行する範囲を「A1」と「A3」に限定できました。

ちょっと応用

ちょっと応用で、値を簡単に転記したい場合に使えます。

ダブルクリック時に値を転記する

ダブルクリック時に値を転記してみます。

やりたいのは、「A」列をダブルクリックして、「商品」~「値段」の値を転記したい、ということです。

ダブルクリックで値を転記したい

「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

「すいか」をダブルクリックすると、「すいか」のデータが転記されます。

「すいか」をダブルクリックしてみる

「すいか」をダブルクリックすると、「すいか」のデータが転記されます

「きゅうい」をダブルクリックすると、「きゅうい」のデータが転記されます。

「きゅうい」をダブルクリックしてみる

「きゅうい」をダブルクリックすると、「きゅうい」のデータが転記されます

「A1:A7」以外をダブルクリックした場合は、転記されないです。

「A1:A7」以外をダブルクリックしても転記されない

「A1:A7」以外をダブルクリックした場合は、転記されないです

転記されないですね。

こんな感じで、値を転記したい場合にボタンではなく、ダブルクリック時に実行すると、スピーディーに実行することができます。

ダブルクリックのシートイベント、かなり便利です。

おわりに

この記事では、ダブルクリック時に実行するシートイベントについて、ご紹介しました。

ダブルクリック時に実行するには、「Worksheet_BeforeDoubleClick」を使います。

ダブルクリックしたセル範囲は、「Target」で取得することができます。

実行したあとに、セルをアクティブ状態から解除するには、「Cancel = True」を使います。

ダブルクリックで実行する「セル範囲を設定」する方法として、

  • 行や列を指定:「Row」や「Column」
  • セル範囲を指定:「Intersect」

という感じで設定することができます。

ダブルクリックで実行できれば、簡単に値を転記したりすることができますので、どんどん使っていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す