Home » Excel VBA Rangeオブジェクト » 条件付き書式 » VBAで条件付き書式を1つだけ削除する

VBAで条件付き書式を1つだけ削除する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

指定したセル範囲に設定された条件付き書式をすべて削除する、Excel VBA(Visual Basic for Applications)のコードをご紹介しています。

Excel VBAに限らずプログラミングでは通常、全部を削除するよりも一部を削除するほうが、面倒です。

条件付き書式も、Excel VBAを使って一つだけ削除しようとすると、考えなければならないことが増えます。

このサイト・インストラクターのネタ帳へも、
「excel2010 vba 条件付き書式1つだけ削除」
といった検索キーワードでのアクセスがあります。

複雑な条件付き書式が設定されていると、削除するSubプロシージャも複雑になりますので、この記事では、まずはシンプルなマクロをご紹介しておきます。

[スポンサードリンク]

2つ目に設定されている条件付き書式を削除するサンプルマクロ

以下のSubプロシージャを実行すると、アクティブなワークシート上の2つ目に設定されている条件付き書式が削除されます。
Sub 条件付き書式をひとつだけ削除する()
 Cells.FormatConditions(2).Delete
End Sub

FormatConditionsコレクションオブジェクトが、
ワークシート上のすべての条件付き書式を表していて、
FormatConditionsコレクションオブジェクトの単独オブジェクトである、
FormatConditionオブジェクトがひとつの条件付き書式を表します。

2つ目に設定されている条件付き書式を削除するために、上記のSubプロシージャはRange.FormatConditionsプロパティの引数に(厳密にはFormatConditionsコレクションオブジェクトの既定メンバーである_Defaultプロパティに)、「2」を指定してすることで、2つ目の条件付き書式を表すFormatConditionオブジェクトを取得しています。

最後の条件付き書式を削除するサンプルマクロ

以下のようなSubプロシージャで、最後に設定されている条件付き書式を削除することができます。
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
という処理を入れています。

変数を利用して最後の条件付き書式を削除するサンプルマクロ

オブジェクト式の文法が理解できていない方の場合は、以下のような変数を利用した形にするほうが、理解しやすいでしょう。

Sub 最後の条件付き書式を削除する_変数利用()
 Dim cnt As Long

 cnt = Cells.FormatConditions.Count
 If cnt = 0 Then Exit Sub
 Cells.FormatConditions(cnt).Delete
End Sub

行っている処理自体は、先のWithステートメントを使ったSubプロシージャと同じです。

[スポンサードリンク]

Home » Excel VBA Rangeオブジェクト » 条件付き書式 » VBAで条件付き書式を1つだけ削除する

Copyright © インストラクターのネタ帳 All Rights Reserved.

.