[[20161021001150]] 『セルの塗りつぶし色を取得して条件マクロを作成』(こたろう) ページの最後に飛ぶ

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

 

『セルの塗りつぶし色を取得して条件マクロを作成』(こたろう)

セル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.