[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの塗りつぶし色を取得して条件マクロを作成』(こたろう)
セルA1、B1、C1、D1にそれぞれセルの塗りつぶし色が設定されているとしたとき、
その4つのセルの色を取得します。
そして選択範囲のセルがA1、B1、C1、D1のセルの塗りつぶしの色の場合は○○する。
というような条件式をマクロに組み込みたいと思っています。
この「A1、B1、C1、D1のセルの塗りつぶしの色の場合は」というマクロを作成したいのですが、セルの色の取得をし、if分へ反映させる方法を教えていただけないでしょうか?
if分のイメージとしては下記の様な形になるかとは思うのですが、、、
with selection
if (A1セルの色 OR B1セルの色 OR C1セルの色 OR D1セルの色)then
end with
ちなみにA1、B1、C1、D1のセルの色は好みの色に変更できるようにしたいので、
あくまでA1、B1、C1、D1のセルの色を取得して、if分に反映するというマクロを
作成したいです。
どなたかわかる方教えていただけると助かります。
宜しくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
IF文制御ならSample1のような感じですかね。 Select/Case を使った Sample2 のような制御方法もありますのでご参考まで。 (いくつかの条件分岐でふりわける場合は、Select/Case のほうが、書きやすく、見やすいと思います)
Sub Sample1() Dim colorA As Long, colorB As Long, colorC As Long, colorD As Long Dim c As Range
colorA = Range("A1").Interior.Color colorB = Range("B1").Interior.Color colorC = Range("C1").Interior.Color colorD = Range("D1").Interior.Color
'選択範囲からセルを1つずつ取り出す For Each c In Selection If c.Interior.Color = colorA Then MsgBox c.Address & "の色は" & colorA & "です" ElseIf c.Interior.Color = colorB Then MsgBox c.Address & "の色は" & colorB & "です" ElseIf c.Interior.Color = colorC Then MsgBox c.Address & "の色は" & colorC & "です" ElseIf c.Interior.Color = colorD Then MsgBox c.Address & "の色は" & colorD & "です" Else MsgBox c.Address & "の色は指定外です" End If Next
End Sub
Sub Sample2() Dim colorA As Long, colorB As Long, colorC As Long, colorD As Long Dim c As Range
colorA = Range("A1").Interior.Color colorB = Range("B1").Interior.Color colorC = Range("C1").Interior.Color colorD = Range("D1").Interior.Color
'選択範囲からセルを1つずつ取り出す For Each c In Selection Select Case c.Interior.Color Case colorA MsgBox c.Address & "の色は" & colorA & "です" Case colorB MsgBox c.Address & "の色は" & colorB & "です" Case colorC MsgBox c.Address & "の色は" & colorC & "です" Case colorD MsgBox c.Address & "の色は" & colorD & "です" Case Else MsgBox c.Address & "の色は指定外です" End Select Next
End Sub (β) 2016/10/21(金) 06:04
あっ! OR条件でしたか。
Sub Sample3() Dim colorA As Long, colorB As Long, colorC As Long, colorD As Long Dim c As Range
colorA = Range("A1").Interior.Color colorB = Range("B1").Interior.Color colorC = Range("C1").Interior.Color colorD = Range("D1").Interior.Color
'選択範囲からセルを1つずつ取り出す For Each c In Selection If c.Interior.Color = colorA Or _ c.Interior.Color = colorB Or _ c.Interior.Color = colorC Or _ c.Interior.Color = colorD Then MsgBox c.Address & "の色は指定色です" Else MsgBox c.Address & "の色は指定外です" End If Next
End Sub
Sub Sample4() Dim colorA As Long, colorB As Long, colorC As Long, colorD As Long Dim c As Range
colorA = Range("A1").Interior.Color colorB = Range("B1").Interior.Color colorC = Range("C1").Interior.Color colorD = Range("D1").Interior.Color
'選択範囲からセルを1つずつ取り出す For Each c In Selection Select Case c.Interior.Color Case colorA, colorB, colorC, colorD MsgBox c.Address & "の色は指定色です" Case Else MsgBox c.Address & "の色は指定外です" End Select Next
End Sub
(β) 2016/10/21(金) 06:10
記載いただいたマクロは要望通りのマクロでした!
これで何とかなりそうです。
ありがとうございました。
(こたろう) 2016/10/25(火) 07:51
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.