-
∨目次
- セルの条件付き書式を取得する
- セルの範囲の条件付き書式を取得する
- 指定したシートのセルの条件付き書式を取得する
VBA セルの条件付き書式を取得する
はじめに
Excel VBA マクロのセルの条件付き書式を取得する方法を紹介します。
Range.FormatConditions プロパティまたは Cells.FormatConditions プロパティから条件付き書式を取得できます。
- 条件付き書式を設定するには「セルに条件付き書式を設定する」をご覧ください。
- セルを取得するには「セルや範囲を取得する」をご覧ください。
-
目次
- セルの条件付き書式を取得する
- セルの範囲の条件付き書式を取得する
- 指定したシートのセルの条件付き書式を取得する
セルの条件付き書式を取得する
Range の引数にセル名を指定すると、そのセルの条件付き書式を取得できます。
セル「A1」の条件付き書式を取得するにはRange("A1").FormatConditionsを入力します。
Dim fcs As FormatConditions
Set fcs = Range("A1").FormatConditions
Debug.Print(fcs.Count)
Cells の引数にセルの行と列の番号を指定すると、そのセルの条件付き書式を取得できます。
行「2」、列「A」の条件付き書式を取得するにはCells(2, 1).FormatConditionsを入力します。
Dim fcs As FormatConditions
Set fcs = Cells(1, 1).FormatConditions ' A1
Set fcs = Cells(2, 1).FormatConditions ' A2
Set fcs = Cells(1, 2).FormatConditions ' B1
Set fcs = Cells(2, 2).FormatConditions ' B2
Debug.Print(fcs.Count)
FormatConditions はコレクションになっており、インデックスに対応する条件付き書式が入っています。
Dim fcs As FormatConditions
Set fcs = Range("A1").FormatConditions
Dim fc As FormatCondition
Set fc = fcs(1) ' 1 つ目の条件付き書式を取得
Set fc = fcs(2) ' 2 つ目の条件付き書式を取得
' 条件の取得
Dim l As Long
Dim s As String
l = fc.Type ' 条件の種類
l = fc.Operator ' 条件
s = fc.Formula1 ' 1 つ目の値
s = fc.Formula2 ' 2 つ目の値
' 書式の取得
Dim bs As Borders
Dim f As Font
Dim i As Interior
Set bs = fc.Borders ' 罫線
Set f = fc.Font ' フォント
Set i = fc.Interior ' 背景
条件付き書式を設定していないセルから取得しようとするとエラーが発生します。
条件付き書式が設定されている数は FormatConditions.Count で取得できます。
' 条件付き書式なし
Debug.Print(Range("A1").FormatConditions(1).Type) ' エラー発生
Debug.Print(Range("A1").FormatConditions.Count) ' 0
' 条件付き書式 2 つ設定
Debug.Print(Range("A1").FormatConditions.Count) ' 2
条件とプロパティは次のように対応しています。

Type の値は次のものがあります。
定数名 | 値 | 説明 |
xlCellValue | 1 | セルの値が |
xlExpression | 2 | 数式が |
Excel 2007 以降では次の値が追加されています。 | ||
xlColorScale | 3 | カラー スケール |
xlDatabar | 4 | データバー |
xlTop10 | 5 | 上位の 10 の値 |
XlIconSet | 6 | アイコン セット |
xlUniqueValues | 8 | 一意の値 |
xlTextString | 9 | テキスト文字列 |
xlBlanksCondition | 10 | 空白の条件 |
xlTimePeriod | 11 | 期間 |
xlAboveAverageCondition | 12 | 平均以上の条件 |
xlNoBlanksCondition | 13 | 空白の条件なし |
xlErrorsCondition | 16 | エラー条件 |
xlNoErrorsCondition | 17 | エラー条件なし |
Operator の値は次のものがあります。
定数名 | 値 | 説明 |
xlBetween | 1 | 次の値の間 |
xlNotBetween | 2 | 次の値の間以外 |
xlEqual | 3 | 次の値に等しい |
xlNotEqual | 4 | 次の値に等しくない |
xlGreater | 5 | 次の値より大きい |
xlLess | 6 | 次の値より小さい |
xlGreaterEqual | 7 | 次の値以上 |
xlLessEqual | 8 | 次の値以下 |
次の画像のように値を一つしか入力できないときに、Formula2 を取得しようとするとエラーが発生します。Formula2 を取得できるのは Operator が xlBetween (1) と xlNotBetween (2) のときです。

Debug.Print(Range("A1").FormatConditions(1).Formula2) ' エラー発生
セルの範囲の条件付き書式を取得する
セルの範囲「A1」~「B2」の条件付き書式を取得するにはRange("A1:B2").FormatConditionsまたはRange("A1", "B2").FormatConditionsを入力します。
Dim fcs As FormatConditions
Set fcs = Range("A1:B2").FormatConditions
Set fcs = Range("A1", "B2").FormatConditions
Debug.Print(fcs.Count)
範囲の各セルの条件付き書式を取得します。
指定したシートのセルの条件付き書式を取得する
シートを指定するには Worksheets の引数にシート名またはインデックスを指定します。
Sheet1 を指定するにはWorksheets("Sheet1")またはWorksheets(1)を入力します。

Dim fcs As FormatConditions
' Sheet1 のセル「A1」の条件付き書式を取得
Set fcs = Worksheets("Sheet1").Range("A1").FormatConditions
Set fcs = Worksheets(1).Range("A1").FormatConditions
Debug.Print(fcs.Count)
' Sheet2 のセル「A1」の条件付き書式を取得
Set fcs = Worksheets("Sheet2").Range("A1").FormatConditions
Set fcs = Worksheets(2).Range("A1").FormatConditions
Debug.Print(fcs.Count)
Sheet1 に Range や Cells を入力すると、自身のシートのセルになります。自身を表すMe.が省略されています。
' どちらも同じコード
Range("A1").Value = "Sheet1"
Me.Range("A1").Value = "Sheet1"
標準モジュールに Range や Cells を入力すると、アクティブなシートのセルになります。アクティブシートを表すActiveSheet.が省略されています。
' どちらも同じコード
Range("A1").Value = "アクティブ"
ActiveSheet.Range("A1").Value = "アクティブ"
スポンサーリンク