INDEX
セルの背景色を条件に応じて取得・変更する方法
Excel VBAを使用すると、セルの背景色を取得・変更し、条件に応じた処理を実行することができます。例えば、特定の色を持つセルを判定し、異なる処理を実行したり、数値に応じて自動でセルの色を変えたりできます。
以下では、Excelの疑似テーブルを使って具体的に解説します。
VBAの作成と実行
- VBAは、[開発]→[VisualBasic]→[挿入]→[標準モジュール]→コードを貼り付け の順で作成します。
- 実行する際は、対象のセルを選択し、[開発]→[マクロ]→実行したいマクロ名を選択して実行します。
Excelの代表的標準カラー(RGB形式)一覧
ExcelのVBAでは、カラーを RGB形式 で指定します。以下は、一般的に使用されるExcelの文字色とそのRGB値の対応表です。
色 | RGB値 | 色 | RGB値 |
---|---|---|---|
■ 黒 | RGB(0,0,0) | ■ 水色 | RGB(0,255,255) |
■ 白 | RGB(255,255,255) | ■ 灰色 | RGB(128,128,128) |
■ 赤 | RGB(255,0,0) | ■ 濃い灰色 | RGB(64,64,64) |
■ 青 | RGB(0,0,255) | ■ 薄い灰色 | RGB(192,192,192) |
■ 緑 | RGB(0,128,0) | ■ 濃い青 | RGB(0,0,128) |
■ 黄色 | RGB(255,255,0) | ■ 濃い緑 | RGB(0,100,0) |
■ 紫 | RGB(128,0,128) | ■ 金色 | RGB(255,215,0) |
■ オレンジ | RGB(255,165,0) | ■ 銀色 | RGB(192,192,192) |
■ ピンク | RGB(255,192,203) |
セルの背景色を取得する
選択範囲のセルの背景色を取得するVBAコードを紹介します。
A | B | C | |
---|---|---|---|
1 | 値あり | 警告 | 安全 |
2 | 重要 |
Sub GetSelectedCellColors()
Dim cell As Range
Dim result As String
' 選択範囲の各セルの色を取得
For Each cell In Selection
result = result & "セル " & cell.Address & " の背景色(RGB値): " & cell.Interior.Color & vbCrLf
Next cell
' 取得した色をメッセージボックスで表示
MsgBox result, vbInformation, "セルの背景色情報"
End Sub
解説:
Selection
を使用し、ユーザーが選択したセルを処理。For Each
ループを使って、選択範囲内のすべてのセルの背景色を取得。MsgBox
で取得した背景色(RGB値)を表示。
背景色を判定して処理を分岐する
次に、セルの背景色が赤・黄色・緑のいずれかの場合に、それぞれ異なるメッセージを表示するVBAコードを紹介します。
A | B | C | |
---|---|---|---|
1 | 危険 | 注意 | 安全 |
Sub CheckSelectedCellColors()
Dim cell As Range
Dim result As String
For Each cell In Selection
Select Case cell.Interior.Color
Case RGB(255, 0, 0) ' 赤
result = result & "セル " & cell.Address & " は警告 (赤)" & vbCrLf
Case RGB(255, 255, 0) ' 黄色
result = result & "セル " & cell.Address & " は注意 (黄色)" & vbCrLf
Case RGB(0, 255, 0) ' 緑
result = result & "セル " & cell.Address & " は安全 (緑)" & vbCrLf
Case Else
result = result & "セル " & cell.Address & " は未定義の色" & vbCrLf
End Select
Next cell
MsgBox result, vbInformation, "セルの背景色判定"
End Sub
解説:
- 選択範囲の各セルの背景色を判定し、指定のRGB値と比較。
- 色ごとに異なるメッセージを表示(例:赤=警告、黄色=注意、緑=安全)。
- 該当しない色は「未定義の色」として処理。
選択範囲のセルの値に応じて背景色を変更する
- 100以上 → 緑
- 50以上100未満 → 黄色
- 50未満 → 赤
適用後のExcelの状態は以下のようになります。
A | B | |
---|---|---|
1 | 120 | 75 |
2 | 30 | 110 |
Sub ChangeSelectedCellsColor()
Dim cell As Range
' 選択範囲のセルを順番に処理
For Each cell In Selection
If IsNumeric(cell.Value) Then ' 数値の場合のみ処理
If cell.Value >= 100 Then
cell.Interior.Color = RGB(0, 255, 0) ' 緑
ElseIf cell.Value >= 50 Then
cell.Interior.Color = RGB(255, 255, 0) ' 黄色
Else
cell.Interior.Color = RGB(255, 0, 0) ' 赤
End If
End If
Next cell
End Sub
解説:
For Each cell In Selection
を使用し、選択範囲のすべてのセルを処理。IsNumeric(cell.Value)
で、セルの値が数値かどうかを判定。- 100以上 → 緑、50以上100未満 → 黄色、50未満 → 赤 に色を変更。
- 選択範囲のすべてのセルが対象になるため、広範囲のデータにも適用可能。
セルの値に応じて背景色を変更する方法(条件付き書式)
Excelの「条件付き書式」機能を使えば、VBAを使用せずに、セルの値に応じて自動的に背景色を変更できます。
- 値に応じて色を変更したいセル範囲(例:A1:B10)を選択する。
- Excelの「ホーム」タブを開き、「条件付き書式」をクリックする。
- 表示されたメニューから「新しいルール」を選択する。
- 「ルールの種類の選択」画面で「数式を使用して、書式設定するセルを決定」を選択する。
- 「次の数式を満たす場合に値を書式設定」欄に、以下の数式(100以上の場合)を入力する:
=A1>=100
- 「書式」ボタンをクリックし、「塗りつぶし」タブで適用したい背景色を選択する。
- 他の分岐についても同様に設定する:
- 50以上100未満の場合:
=AND(A1>=50, A1<100)
- 50未満の場合:
=A1<50
- 50以上100未満の場合:
- 「OK」をクリックして条件付き書式を確定し、ダイアログを閉じる。
A | B | |
---|---|---|
1 | 120 | 75 |
2 | 30 | 110 |
まとめ
- 選択範囲の背景色を取得するには、
For Each
ループを使用。 - 取得した色のRGB値を判定し、処理を分岐できる。
- セルの値に応じて背景色を変更するには、条件を設定して
Interior.Color
を変更。 - 選択範囲の背景色をクリアするには、
Interior.ColorIndex = xlNone
を使用。