指定したセル範囲に設定された条件付き書式をすべて削除する、Excel VBA(Visual Basic for Applications)のコードをご紹介しています。
Excel VBAに限らずプログラミングでは通常、全部を削除するよりも一部を削除するほうが、面倒です。
条件付き書式も、Excel VBAを使って一つだけ削除しようとすると、考えなければならないことが増えます。
このサイト・インストラクターのネタ帳へも、
「excel2010 vba 条件付き書式1つだけ削除」
といった検索キーワードでのアクセスがあります。
複雑な条件付き書式が設定されていると、削除するSubプロシージャも複雑になりますので、この記事では、まずはシンプルなマクロをご紹介しておきます。
2つ目に設定されている条件付き書式を削除するサンプルマクロ
以下のSubプロシージャを実行すると、アクティブなワークシート上の2つ目に設定されている条件付き書式が削除されます。Cells.FormatConditions(2).Delete
End Sub
FormatConditionsコレクションオブジェクトが、
ワークシート上のすべての条件付き書式を表していて、
FormatConditionsコレクションオブジェクトの単独オブジェクトである、
FormatConditionオブジェクトがひとつの条件付き書式を表します。
2つ目に設定されている条件付き書式を削除するために、上記のSubプロシージャはRange.FormatConditionsプロパティの引数に(厳密にはFormatConditionsコレクションオブジェクトの既定メンバーである_Defaultプロパティに)、「2」を指定してすることで、2つ目の条件付き書式を表すFormatConditionオブジェクトを取得しています。
最後の条件付き書式を削除するサンプルマクロ
以下のようなSubプロシージャで、最後に設定されている条件付き書式を削除することができます。With Cells.FormatConditions
If .Count = 0 Then Exit Sub
.Item(.Count).Delete
End With
End Sub
条件付き書式が存在しないときに実行時エラーが発生しないように、
With Cells.FormatConditions
If .Count = 0 Then Exit Sub
という処理を入れています。
変数を利用して最後の条件付き書式を削除するサンプルマクロ
オブジェクト式の文法が理解できていない方の場合は、以下のような変数を利用した形にするほうが、理解しやすいでしょう。
Dim cnt As Long cnt = Cells.FormatConditions.Count
If cnt = 0 Then Exit Sub
Cells.FormatConditions(cnt).Delete
End Sub
行っている処理自体は、先のWithステートメントを使ったSubプロシージャと同じです。
- Newer:VBAで段落番号の文字列を書式も含めて取得する
- Older:VBAでアウトラインレベルを取得する
Home » Excel VBA Rangeオブジェクト » 条件付き書式 » VBAで条件付き書式を1つだけ削除する