• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:条件付書式をVBAでセルに設定するときのルール)

VBAで条件付書式を設定する方法とFormatConditionsについて

このQ&Aのポイント
  • VBAを使用してExcelの条件付書式を設定する方法について解説します。また、FormatConditionsの使用方法とその仕組みについても説明します。
  • 条件付書式をVBAで設定する際に背景色や罫線の設定方法について説明します。
  • FormatConditions.AddメソッドとFormatConditionsプロパティの使い方について解説します。また、(1)という番号がつく理由とAとBの処理についても説明します。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

(1) こんな感じ .FormatConditions(1).Interior.Pattern = xlNone .FormatConditions(1).Borders.LineStyle = xlContinuous (2) .FormatConditions.Add でやっているのは条件付き書式の作成です。 .FormatConditions(1).Font.Color でやっているのは条件付き書式の内容の作成です。 書式を作成するときは,何番目の書式を作成するなんてことはしません。存在する書式の数+1番目に決まっていますから。でも書式の内容を作成するときには何番目の書式かを指定しないとどれに設定していいのかわかりません。

ketae
質問者

お礼

ヒントをどうもありがとうございました。 結局こうしました。 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

その他の回答 (1)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.2

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で取得できます。直前に追加した書式の添字は、書式数と同じです。

ketae
質問者

お礼

>既に書式が設定されている場合 そこをどう書いていくのかがよくわからなかったのですが、プライオリティーという概念もあることがわかりました。 参考になりました。

関連するQ&A