Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » ダブルクリックでセルの色を変更−Worksheet_BeforeDoubleClick

ダブルクリックでセルの色を変更−Worksheet_BeforeDoubleClick

対象:Excel97, Excel2000, Excel2002, Excel2003, Excel2007

実務でExcelをお使いの方からは、様々な質問・要望をいただきます。

「セルをダブルクリックしたら色を変えられるようにするにはどうしたらいいのでしょうか?」
といったご質問をいただくことがあります。

2003までのExcelなら、[書式設定]ツールバー−[塗りつぶしの色]ボタンや、[セルの書式設定]ダイアログ−[パターン]タブでセルの色を指定できます。

Excel 2007なら、[ホーム]タブ−[フォント]グループ−[塗りつぶしの色]ボタンや、[セルの書式設定]ダイアログ−[塗りつぶし]タブなどでセルの色を指定できます。

[スポンサードリンク]

実務ではセルの色を変更する処理が頻発するようなことがあり、そんなときに[塗りつぶしの色]ボタンの操作でさえ面倒に感じることもあり、
「ダブルクリックで色を変えるには?」
といった要望をいただくことになるわけです。

▼ダブルクリックしたときにセルの色を変更するイベントプロシージャ
※B1:B10セルでダブルクリックしたときに、塗りつぶしが設定されていなければ明るい緑色で塗りつぶし、塗りつぶしが行われているときは塗りつぶしを解除する例

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

 If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub

 With Selection.Interior
  If .ColorIndex = xlNone Then
   .ColorIndex = 4
  Else
   .ColorIndex = xlNone
  End If
 End With

 Cancel = True

End Sub

▼サンプルファイル(003086.xls 37KByte)ダウンロード

サンプルファイルでは「Sheet1」シートのWorksheet_BeforeDoubleClickイベントプロシージャを、上記のようにコーディングしてあります。

「Sheet1」シートのB1:B10セルをダブルクリックすると、セルの色が変化することをご確認いただけるでしょう。

セルの背景色を変更しているのは、
 With Selection.Interior
  If .ColorIndex = xlNone Then
   .ColorIndex = 4
  Else
   .ColorIndex = xlNone
  End If
 End With
の部分です。

「.ColorIndex = xlNone」のとき、即ち背景色が設定されていないときに「.ColorIndex = 4」としています。「4」が明るい緑色なのですが、他の色にしたいときは他の数値を指定してください。

色と数値の関係については、ColorIndexプロパティ値一覧をご参照ください。

B1:B10セルに対してだけ処理したいので、
 If Intersect(Target, Range("B1:B10")) Is Nothing Then Exit Sub
というIf文を、背景色の変更処理の前に入れています。

他のセル範囲に対して、ダブルクリックで色変更するのであれば、「Range("B1:B10")」の部分を変更してください。

Excelでは通常ダブルクリックをすると、セル内にカーソルが入ってしまいますが、色をつけるためにダブルクリックしているのに、いちいちセル内にカーソルが入ると鬱陶しくて仕方ないはずなので、「Cancel = True」でDoubleClickイベントをキャンセルしています。

関連語句
セルをダブルクリックしたら文字色をかえられる

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » ダブルクリックでセルの色を変更−Worksheet_BeforeDoubleClick

「イベントプロシージャ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.