Worksheet_BeforeDoubleClickのCancel As Booleanとは

Cancel とは何をキャンセルするのか
Worksheet_BeforeDoubleClick

リンクユニット


イベントマクロ 05回

Worksheet_BeforeDoubleClick の引数Cancel

今回も前回からの続きです。Worksheet_BeforeDoubleClick(ワークシートビーフォーダブルクリック)と言うイベントマクロの引数には、 Cancel As Boolean (キャンセルアズブーリン)と言う引数があります。
このキャンセルと言うのはどういうことなんだと言う事を説明したいと思います。
ダブルクリックすると普通は、セルの中にカーソルが入ります。カーソルが入っても良い場合は、つまり編集する場合であれば、そのままで何も書かなくてもいいんです。
ただし、編集するわけではないから、セルの中にカーソルが入る必要はないという場合も多いですね。
とくにこのイベントマクロを実行するケースでは、セルの編集はしないことが多いです。
そこでコードに、Cancel = True を記述して、Targetのセルが編集状態にならないようにします。

Cancel = True で、Targetのセルを編集状態にしない

1. 4回で紹介したコードの中に、Cancel = True を記述すれば、セルは編集状態になりません。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
	Cancel = True
    If Not Intersect(Target, Range("B2:D9")) Is Nothing Then
    MsgBox Cells(Target.Row, 2).Value & vbCrLf & Cells(Target.Row, 3).Value & vbCrLf & _
            Cells(Target.Row, 4).Value
    End If
End Sub

2.こちらは上記コードをダブルクリックしたときに、メッセージボックスにデータを表示するのではなく、指定したセルにコピーします。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True  'ダブルクリックしてもセル内編集モードにしない
    If Not Intersect(Target, Range("B2:D9")) Is Nothing Then
    Cells(Target.Row, 6).Value = Cells(Target.Row, 2).Value & ", " & _
                                Cells(Target.Row, 3).Value & ", " & Cells(Target.Row, 4).Value
    End If
End Sub
実行すると、ダブルクリックしたセルのデータをセルに書き出します。
Worksheet_BeforeDoubleClick1 border=0

ダブルクリックしたセルだけ、背景色を変更、フォント太字

3. ではもう1つコードの例を紹介します。今度はダブルクリックしたセルを条件判定して、条件に合えば、そのセルのフォントを太字にします。


Worksheet_BeforeDoubleClick2 border=0
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    If Target.Value >= 70 And Target.Offset(0, 1).Value + Target.Offset(0, 2).Value >= 100 Then
        Selection.Font.Bold = True
    ElseIf Target.Value <= 60 And Target.Offset(0, 1).Value + Target.Offset(0, 2).Value <= 100 Then
        Selection.Interior.Color = RGB(255, 230, 153)
    End If
End Sub

3. 英語の列をクリックする前提ですが、条件によって、英語の点数を太字にしたり、英語の点数も芳しくなく、他の点数も低い場合は、背景色を変更するというものです。太字にするのは、.Font.Bold = True 背景色は、.Interior.Color = RGB(255, 230, 153)のように、指定しています。


Worksheet_BeforeDoubleClick3 border=0

4. ダブルクリックイベントが実行されると、IF文で指定した条件を判定して、条件に合うセルのフォントを変更したり、背景色を変更します。
Cancel = True としているので、ダブルクリック後に、カーソルがセルの中に入り、編集状態になることはありません。