[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ExcelのVBAでセル選択して右クリックで色を塗りたい』(marco3)
ExcelのVBAにて、複数セルを選択した後に
(1)そのセルに色がついていなければ、指定の色を塗る
(2)そのセルに色がついていれば、色塗りを無にする
を実装したいのですが、色々調べてたり自分で試しにやってみましたがうまくいきません。
ご教授お願いします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
イベントが違いますが、参考になると思います。
[[20070119132330]] 『クリックするとセルの色が変わる』(ショート)
(OK) 2021/04/06(火) 16:33
>複数セルを選択した後に
見落としてました。 イベントではなく、手動で色を切替ですか。
リンクした過去ログのコードは参考になると思いますが、 コードの改造が必要になります。 (OK) 2021/04/06(火) 16:34
参考コードです。
Sub test() Dim c As Range If TypeName(Selection) <> "Range" Then Exit Sub For Each c In Selection MsgBox c.Interior.ColorIndex Next c End Sub (OK) 2021/04/06(火) 16:41
ありがとうございます
複数のセルを選択して右クリックをしてイベントを発生させたいのですが、
↓↓
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Application.Intersect(Target, Range("A1:ZZ1000")) Is Nothing Then Cancel = False Else Cancel = True Target.Interior.ColorIndex = 45 End If End Sub ↑↑ 実装可能となっているのですが、実は色を塗るだけで(2)の「色がついていたら無色にする」がどうしてもできません
もしどなたか教えていただければ幸いです。
(marco3) 2021/04/07(水) 14:41
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim WK_RANGE As Range
If Application.Intersect(Target, Range("A1:ZZ1000")) Is Nothing Then Cancel = False Else Cancel = True For Each WK_RANGE In Intersect(Target, Range("A1:ZZ1000")) If WK_RANGE.Interior.ColorIndex = xlNone Then WK_RANGE.Interior.ColorIndex = 45 Else WK_RANGE.Interior.ColorIndex = xlNone End If Next End If End Sub ではどうだろうか?
(ねむねむ) 2021/04/07(水) 14:55
そうですね、リンク先にまさしく答えが書いてありました!
複数セルでも反転しました
ありがとうございました!
と、ここでひとつ気が付いたのですが
【色有・色無のセルを複数選択している場合は何も動作しないのですが、このような状況でも状況判断してそれぞれを色有・色無へ反転することは可能なのでしょうか?】
ちなみに、セルは複数選択しますが、連続するセル選択が基本です。
よろしくお願い致します。
(marco3) 2021/04/07(水) 14:58
ご指摘ありがとうございます
私のやりたかったことが全て解決できました
>ねむねむ様
ありがとうございました!
私がやりたかったことができるようになりました
本当に嬉しいかぎりです
参考書を色々よんでも全然進まなかったのですが、相談してみてよかったです
(marco3) 2021/04/07(水) 15:22
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.