- ベストアンサー
VBAで条件付書式を設定する方法とFormatConditionsについて
- VBAを使用してExcelの条件付書式を設定する方法について解説します。また、FormatConditionsの使用方法とその仕組みについても説明します。
- 条件付書式をVBAで設定する際に背景色や罫線の設定方法について説明します。
- FormatConditions.AddメソッドとFormatConditionsプロパティの使い方について解説します。また、(1)という番号がつく理由とAとBの処理についても説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
(1) こんな感じ .FormatConditions(1).Interior.Pattern = xlNone .FormatConditions(1).Borders.LineStyle = xlContinuous (2) .FormatConditions.Add でやっているのは条件付き書式の作成です。 .FormatConditions(1).Font.Color でやっているのは条件付き書式の内容の作成です。 書式を作成するときは,何番目の書式を作成するなんてことはしません。存在する書式の数+1番目に決まっていますから。でも書式の内容を作成するときには何番目の書式かを指定しないとどれに設定していいのかわかりません。
その他の回答 (1)
- ap_2
- ベストアンサー率64% (70/109)
ANo.1の通りなので、補足程度ですが FormatCondition はコレクション=オブジェクトの集合体です。 その中に、複数の条件付き書式オブジェクトが入っています。 FormatCondition '書式のコレクション FormatCondition.Item(1) 'コレクション内の1番目の書式 FormatCondition.Item(2) 'コレクション内の2番目の書式 .Itemは省略可能で、FormatCondition(1)と配列感覚で扱えます。 質問のコードでは、まず、FormatCondition.Add でコレクションに書式を追加し、その後A,Bで、追加されたFormatCondition(1)に色などを設定しています。 ただし、最初に追加した書式は(1)、次は(2),(3)・・・と、末尾に追加されていきます。既に書式が設定されている場合を考えると、追加した書式は(1)とは限らないので、次のように直すといいです。 .FormatConditions(1).Font ↓ .FormatConditions(.FormatConditions.Count).Font #コレクション内の書式の数を.Countで取得できます。直前に追加した書式の添字は、書式数と同じです。
お礼
>既に書式が設定されている場合 そこをどう書いていくのかがよくわからなかったのですが、プライオリティーという概念もあることがわかりました。 参考になりました。
お礼
ヒントをどうもありがとうございました。 結局こうしました。 Sub TestSample() Dim i As Long i = 20 With ActiveSheet Range(Cells(2, 3), Cells(i, 3)).Select With Selection .FormatConditions.Delete .FormatConditions.Add Type:=xlTextString, String:="TRUE", _ TextOperator:=xlContains .FormatConditions(1).Font.Color = RGB(0, 50, 255) .FormatConditions(1).Interior.TintAndShade = 0 .FormatConditions(1).Interior.Pattern = xlNone '実線 '.FormatConditions(1).Borders.LineStyle = xlContinuous With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin End With End With End With End Sub