Worksheet_BeforeDoubleClickのCancel As Booleanとは
イベントマクロ 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実行すると、ダブルクリックしたセルのデータをセルに書き出します。
ダブルクリックしたセルだけ、背景色を変更、フォント太字
3. ではもう1つコードの例を紹介します。今度はダブルクリックしたセルを条件判定して、条件に合えば、そのセルのフォントを太字にします。
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)のように、指定しています。
4. ダブルクリックイベントが実行されると、IF文で指定した条件を判定して、条件に合うセルのフォントを変更したり、背景色を変更します。
Cancel = True としているので、ダブルクリック後に、カーソルがセルの中に入り、編集状態になることはありません。