[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの塗りつぶし色を取得して条件マクロを作成』(こたろう)
セル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.