[[20190907104248]] 『クリックでセルの色を塗りたい』(とよ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『クリックでセルの色を塗りたい』(とよ)

マクロ初心者で申し訳ございません。

タイトルの通り、クリックである範囲内のセルの色を塗りたいです。

ある範囲はC9:AF28 と AK3:AV28 と C32:AZ49 の3つのセルの中だけを

クリックだけで色が塗れて、他のセルはクリックしても塗らないようにできると助かります。

どなたかご教授いただけないでしょうか、、、

< 使用 Excel:Excel2013、使用 OS:Windows10 >


クリックイベントはないので右クリックイベント

 ↓が参考になると思います。
[[20180411011335]] 『色の取得して任意のセルにクリックしたら色が変わ』(とほほ)
(OK) 2019/09/07(土) 10:56

 色を塗るだけならSelectionChangeでもいいかな。
 同じセルを2回続けてクリックしてもイベントは発生しない。
 ただし、間違って塗ってしまって修正する場合はありますか?

 色を塗る→SelectionChange

 色を消す→BeforeRightClick

 とか。
(OK) 2019/09/07(土) 11:05

 屋上屋を架すの類だが。

 ワークシートのイベントプロシージャにどんな種類があるか、等については
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html
 が参考になる。もちろん、VBAのヘルプでもよいのだが。

 まずどんな種類のイベントプロシージャを使うか。
 ・SelectionChangeでもよさそうだが、キーボード操作でそこを通るだけでも
   色がついてしまう。意図しない動作になることもあるから注意が必要。
 ・単一のセルだけ塗るなら、BeforeDoubleClickもありうる。
 ・まとめて塗るなんていうことなら、BeforeRightClickがいいだろう。
  普段はあまり使わない動作だろうから(多用する人もいるかも)、
  思わぬ副作用を心配しなくていい。

 範囲を限定する方法は、上記のサイトに例文があるし、すでに紹介されたこちらのスレッドも参考になる。
 Targetという既定のRangeオブジェクトを使うことがポイントになる。

 あとは、Cancel引数の使い方もポイントだろう。
 BeforeRightClickやBeforeDoubleClickでは、既定の動作は抑止したほうがいい。

 例文を読み試しながら、動作を確認するとよいと思います。

(γ) 2019/09/07(土) 11:35


多くのセルを連続して色を付けたいだけなら
右手でマウスクリック(セル選択)、左手でF4キー
の繰り返しでも可能です。

マクロも便利ですが、操作履歴が消去されます。
「元に戻す」の機能は使っていない
ということであれば問題なしです。

(マナ) 2019/09/07(土) 11:53


皆様ありがとうございます。

yahoo知恵袋から私の理想に近いマクロを見つけました。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub '※1
Select Case Target.Interior.ColorIndex
Case Is = xlNone
Target.Interior.ColorIndex = 3 '※2
Case Else
Target.Interior.ColorIndex = xlNone
End Select
End Sub

こちらが凄く参考になったのですが、
指定範囲だけを塗れるように、他は塗れないようにするには
どうしたら良いでしょうか?

C9:AF28 と AK3:AV28 と C32:AZ49 の3つの範囲です。

(とよ) 2019/09/07(土) 13:50


 2019/09/07(土) 10:56
 の過去ログは参考にならなかったですか?
(OK) 2019/09/07(土) 13:57

 参考HPです。

https://excel-vba.blog.so-net.ne.jp/2009-06-16
(OK) 2019/09/07(土) 14:01


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.