エクセル実践塾 > エクセル実践塾2016

右クリックで、 セルの塗りつぶしを解除したい

 

Worksheet_BeforeRightClick イベント を使ったマクロで、実行可能です

Worksheet_BeforeRightClick イベント を使用すれば、右クリックが行われる前に特定の処理を実行できます。

次の VBAマクロ は、ワークシート内で右クリックしたときに、そのセル範囲の塗りつぶしを解除する処理 を行います。


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

 ' 右クリックしたセルの範囲を塗りつぶし解除

 On Error Resume Next ' 塗りつぶし解除中にエラーが発生しても無視する

 Target.Interior.ColorIndex = xlNone ' 塗りつぶし解除

 On Error GoTo 0 ' エラーハンドリングをリセット

End Sub

 

@シートをダブルクリックして、そのシートモジュールに左図のようなマクロを記述します

 

 

 

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

Worksheet_BeforeRightClick は、ワークシート上で 右クリック したときに発動する イベントプロシージャ です。

Target As Range

ユーザーが 右クリックしたセル(または範囲) を表します。

Cancel As Boolean

True に設定すると、右クリックメニュー(コンテキストメニュー)が表示されなくなります。(このコードでは使用していません)

 ' 右クリックしたセルの範囲を塗りつぶし解除

 On Error Resume Next ' 塗りつぶし解除中にエラーが発生しても無視する

On Error Resume Next は、エラーが発生してもマクロを停止せずに次の処理を実行するための設定です。

セルが保護されていて変更できない場合や、エラーが発生する可能性がある状況でも、マクロが停止しないようにするために使用しています。

 Target.Interior.ColorIndex = xlNone ' 塗りつぶし解除

Target は、右クリックされたセル(またはセル範囲) を指します。

Target.Interior.ColorIndex = xlNone にすることで、セルの塗りつぶしを 解除 します。

ColorIndex は、Excel の カラーパレットのインデックス番号 です。

xlNone は、「塗りつぶしなし(透明)」 を意味します。

 On Error GoTo 0 ' エラーハンドリングをリセット

End Sub

On Error GoTo 0 にすることで、エラーハンドリングの設定を元に戻します。

これにより、以降の処理でエラーが発生した場合は 通常のエラーメッセージが表示されるようになります。

A右クリックしたセルの塗りつぶしを解除できます

ショートカットメニューは表示されます。

B選択したセル範囲を右クリックした場合は、それらのセルの塗りつぶしをまとめて解除できます

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 

 

●A列のセルと同じ色で塗りつぶされているセルの個数を表示する、 ユーザー定義関数を作る動画です

関連する他のページ

労働時間を計算するユーザー定義関数を使って、 残業時間を求めるユーザー定義関数を作りたい
既存のユーザー定義関数は、 別のユーザー定義関数内で実行して、 その結果を利用することができます

選択したセル範囲のデータから、一意のものを取り出したい
マクロなら可能です

選択したセル範囲のデータを、一列にまとめたい
10行程度のマクロでも行えます

組み合わせ一覧を表示するマクロを、 要素数と選び出す数を自由に指定できるものにしたい
入れ子構造のマクロでは汎用的にできないので、 再帰処理を使ったマクロにします

ABCの観点別評価の組み合わせパターンを知りたい
入れ子構造のマクロで求めることができます

ドロップダウンリストで選んだデータを、 選んだ直後に、 対応する別データに置換して入力したい
セル値の変化を監視するマクロで実行できます

置換リストを使って、 複数の置換をまとめて行いたい
10行程度のマクロで、 置換リストを使った一斉処理が可能です

セルに入力されている文字列を、そのシート名にしたい
簡単なマクロで実現できます

マクロ実行の対象範囲を固定したい
セルやセル範囲は、 Rangeで指定できます

選択中のセル範囲に含まれる空セルを、 マクロ処理の対象から除外したい
空セルでないことを条件に、 マクロを実行するよう、 If文を追加します

選択中のセル範囲に対してのマクロ実行結果を、 別のセルに表示したい
Offsetを使うと、 対象のセルの位置を行列単位でずらすことができます

選択中のセル範囲に対するマクロを作りたい
For Each〜Nextで、 選択中のセル範囲(Selection)に対する処理を記述します