プロが教える店舗&オフィスのセキュリティ対策術

右クリックした任意の列全体を黄色に塗りつぶす。
もう一度右クリックしたら元に戻す。

こういうコードお願いします。

A 回答 (3件)

こんにちは!



一例です。
シートモジュールにしてください。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With Target
If .Interior.ColorIndex = xlNone Then
.EntireColumn.Interior.ColorIndex = 6
Else
.EntireColumn.Interior.ColorIndex = xlNone
End If
End With
End Sub

※ 通常の右クリック(ショートカットメニューの表示)はできなくなります。
ショートカットメニュー表示が必要な場合はコード内の
>Cancel = True
を削除してください。m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

うまくいきました。
追加で恐縮ですが、適用範囲を絞ることはできますか。
たとえば、
RANGE("KI:M28")
の中だけで実行するように指定できるでしょうか。
それ以外の範囲で右クリックしても何も起こらないようにしたい場合です。

お礼日時:2016/09/27 17:19

対象を「選択しているセルを含む列」ただし複数のセルを選択している場合は無反応になります。


-----------------------------------------------------------------
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Selection.Count = 1 Then
Cancel = True
If Target.Interior.ColorIndex = 6 Then
Columns(Target.Column).Interior.ColorIndex = xlNone
Else
Columns(Target.Column).Interior.ColorIndex = 6
End If
End If
End Sub
-----------------------------------------------------------------
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

こちらもうまくいきました。
少し考えを変えて、単純に右クリックしたら「塗りつぶし無し」になるようなコードを書きたいと思います。
みなさんから教えていただいたものをカスタマイズすれば簡単かと思ったのですが、まったくダメです。
新しく質問を立てますので、そちらでもよろしく。

お礼日時:2016/09/27 17:59

「任意の列全体」とは「選択している列全体」ということでしょうか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

申し訳ありません。
表現がまずかったと思います。
右クリックした任意のセルが属する列全体、という意味です。

お礼日時:2016/09/27 17:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!