質問

いつも皆様には大変お世話になっております。

早速ですが、VBAでセルをクリック(もしくはダブルクリック)するとそのセルの色が変わるといったようなマクロが組めるでしょうか。
色を変えたいのは、A1~A4までの4個のうち1個だけなのでA1がクリックされればA2~A4までは『色なし』にしたいのです。
そんなことは出来るでしょうか?
よろしくお願いいたします。

通報する

回答 (2件)

「クリックすると」というイベントを拾う方法がわからないので、ダブルクリックすると、にしてみました。

シートタブを右クリックして「コードの表示」を選択するとVBAの画面が出るので、右の白いところに以下のマクロをコピーして貼り付けてください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 Dim Rng As Range, myRng As Range
 Set Rng = Range("A1:A4")
 Set myRng = Intersect(Target, Rng)
 If myRng Is Nothing Then Exit Sub
 Rng.Interior.ColorIndex = xlColorIndexNone
 myRng.Interior.ColorIndex = 5
 Cancel = True
End Sub

これで、A1からA4までのどれかをダブルクリックすると、そのセルが青くなります。色を変えたいときは、上の「5」という数字を適当に変えてください。(VBAのヘルプで「ColorIndex」で検索すると、数値と色の対応表が出てきます)

なお、普通はダブルクリックするとそのセルは入力状態になりますが、上のマクロではならないようにしています。ダブルクリックして色を変えた後、そのセルを入力状態にするのであれば、最後の
 Cancel = True
を削除してください。

この回答へのお礼

早速のお返事ありがとうございます。
皆様すごいですね 『普通はダブルクリックするとそのセルは入力状態になりますが』
これを止めることが出来るとは思っていませんでした
またこれを参考にがんばってみます
ありがとうございました。

こんにちは。

1. シート選択タブ上で右クリック[コードの表示]
2. 下記のコードをコピー&ペースト

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  ' 動作させるセルのアドレス
  Const ADDR As String = "A1:A4"
  ' 着色するセル背景色のカラーインデックス
  Const CIDX As Long = 36
  
  If Union(Target, Range(ADDR)).Address(0, 0) = ADDR Then
    If Target.Count = 1 Then
     Range(ADDR).Interior.ColorIndex = xlColorIndexNone
     Target.Interior.ColorIndex = CIDX
    End If
  End If

End Sub

この回答へのお礼

早速の返事ありがとうございます
お~!! すごいです!!
ばっちり望んでいたものです!!
またこれを参考に色々と作ってみます!
本当にありがとうございました

このQ&Aは役に立ちましたか?2 件

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

新しく質問する

このQ&Aを見た人はこんなQ&Aも見ています

注目の記事

おしトピアプリ登場記念!コメントで最大1万円分のギフト券があたる!

話題のトピックにさくっとコメントできる「おしトピ」にAndroid版アプリに続きiPhoneアプリも登場! どちらかのアプリをダウンロードして指定のオーダーにコメントした方に抽選で最大1万分のアマゾンギフト券をプレゼント! フジテレビ出身のフリーアナウンサー長谷川豊氏の質問にも回答受付中!

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ