「excelvba 条件付き書式が設定されているかを調べるには」
という検索キーワードでこのサイト・インストラクターのネタ帳へのアクセスがありました。
Excel VBA(Visual Basic for Applications)で、条件付き書式が設定されているかどうかを調べるには、どのようなコードを書けばいいのかを探していた方による検索です。
FormatConditionsコレクションで条件付き書式が設定されているかを調べるサンプルマクロ
FormatConditonsコレクションオブジェクトのCountプロパティを調べるのが簡単でしょう。If Cells.FormatConditions.Count = 0 Then
MsgBox "条件付き書式は設定されていません。"
Else
MsgBox "条件付き書式が設定されています。"
End If
End Sub
上記のSubプロシージャを実行すると、アクティブなワークシートに条件付き書式が設定されていないときには、
「条件付き書式は設定されていません。」
設定されていれば、
「条件付き書式が設定されています。」
とメッセージボックスが表示されます。
RangeオブジェクトのFormatConditionsプロパティで、
条件付き書式を表すFormatConditionsコレクションオブジェクトを取得して、
そのCountプロパティが「0」であれば、条件付き書式が設定されていないと判断できます。
上記のプロシージャでは、Cellsプロパティに引数を指定しないことで、全てのセルを表すRangeオブジェクトを取得して、そのFormatConditionsプロパティを利用していますが、
「Cells.FormatConditions.Count」を、
「ActiveCell.FormatConditions.Count」とすればアクティブなセルを、
「Selection.FormatConditions.Count」とすれば選択されているセル範囲を、
「Range("A1:G7").FormatConditions.Count」とすればA1:G7セルを、調べられます。
イミディエイトウィンドウから条件付き書式が設定されているかを調べる
FormatConditions.Countを調べるだけですから、イミディエイトウィンドウに
? cells.FormatConditions.Count
と入力して[Enter]キーを押して、「0」ならば条件付き書式は設定されていないという判断もできます。
Cellsプロパティに引数を指定しなければ、自動メンバー表示が行われますから、「cells.FormatConditions.Count」というオブジェクト式を入力するのも苦ではないはずです。
Range.SpecialCellsメソッドで条件付き書式が設定されているかを調べるサンプルマクロ
Excelの[ジャンプ]ダイアログから表示できる、
[選択オプション]ダイアログを使って、
条件付き書式の設定されているセルを選択する操作をご存じの場合、マクロ記録すると作られるコードに登場する、Range.SpecialCellsメソッドを使う方法を思いつくかもしれません。
RangeオブジェクトのSpecialCellsメソッドを使って、条件付き書式が設定されているかを調べるには、以下のようなSubプロシージャでしょうか。
Dim rng As Range
On Error Resume Next
Set rng = Cells.SpecialCells(xlCellTypeAllFormatConditions)
On Error GoTo 0
MsgBox "条件付き書式は設定されていません。"
Else
MsgBox "条件付き書式が設定されています。"
End If
End Sub
Range.SpecialCellsメソッドは、該当するセルが見つかったときに、そのセルを表すRangeオブジェクトを返し、該当するセルが見つからない場合は、「該当するセルが見つかりません。」という実行時エラーが発生します。
そのため、Range.SpecialCellsメソッドを呼ぶ前に、
On Error Resume Next
としておいてから、
Set rng = Cells.SpecialCells(xlCellTypeAllFormatConditions)
で、Range.SpecialCellsメソッドの戻りをセットしたオブジェクト変数・rngが、オブジェクト変数の初期値・Nothingのままかどうかを調べています。
If rng Is Nothing Then
オブジェクト変数や、On Error文を使っているため、先ほどのFormatConditions.Countプロパティを使うプロシージャよりも難易度は上がりますから、条件付き書式が設定されているかを調べるだけならば、FormatConditions.Countプロパティを使うほうが良さそうです。
ブック内の全ワークシートで条件付き書式が設定されているかを調べるサンプルマクロ
ブックに含まれるすべてのワークシートで、条件付き書式が設定されているかどうかを調べたい場合は、以下のようなループ処理を行いましょう。
Dim sh As Worksheet For Each sh in Worksheets
If sh.Cells.FormatConditions.Count = 0 Then
MsgBox "条件付き書式は設定されていません。"
Else
MsgBox "条件付き書式が設定されています。"
End If
Next sh
End Sub
すべてのワークシートに対するFor Each~Nextループの中で、
For Each sh in Worksheets
FormatConditions.Countプロパティを利用しています。
If sh.Cells.FormatConditions.Count = 0 Then
- Newer:VBAからTEXT関数を入力する
- Older:RGB値を取得するユーザー定義関数
Home » Excel VBA Rangeオブジェクト » 条件付き書式 » 条件付き書式が設定されているかをVBAで調べる