[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『クリックでセルの色を塗りたい』(とよ)
マクロ初心者で申し訳ございません。
タイトルの通り、クリックである範囲内のセルの色を塗りたいです。
ある範囲は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
マクロも便利ですが、操作履歴が消去されます。
「元に戻す」の機能は使っていない
ということであれば問題なしです。
(マナ) 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.