図のような列があります。
C列にこだわっているわけではないのですが、その左側にある列で計算をしているという意味で、A、B列はあけただけです。
で、IF文で計算してある条件に合致するとC列で「TRUE」を表示し、合致していない場合はそのときの計算結果を表示させています(IF文的に正しくないので、計算したままの値が計算結果として表示される)。
この結果の見せ方として、これまではC列に「条件付書式」を手動で設定し、文字がTRUEのとき字を青くする表示にしていたのですが、同様の処理を行うExcel Bookファイルが多いため、VBAで条件書式を設定しようとし、次のような記述を実行しました。
すると、図のような結果になりました。
----------------------------------------------
Sub TestSample()
Dim i As Long
i = 20
'実際には最終行はBookによって異なるので、
’行末検索させせていますが、とりあえずここでは20としておきます。
With ActiveSheet
Range(Cells(2, 3), Cells(i, 3)).Select
With Selection
FormatConditions.Add Type:=xlTextString, String:="TRUE", _
TextOperator:=xlContains
.FormatConditions(1).Font.Color = RGB(0, 50, 255) ’ーーA
.FormatConditions(1).Interior.TintAndShade = 0 ’ーーB
End With
End With
End Sub
----------------------------------------------
質問が2つあります。
1. 背景がいわゆる「色なし」ではなく白くなっていますが、背景「色なし」かつ「罫線でかこむ」には、どのような記述をすればよいでしょうか
2. FormatConditions.Add Type:~~~~
につづく別の行(Aのところ)に「FormatConditions.」と記述すると実行できません。
マクロで条件書式の自動記録をやって参考にしたところ、添値のような(1)が記録されることに気が付き、それを真似して
FormatConditions(1).
としたところ、動作しました。
最初だけFormatConditionsで、なぜAのところはFormatConditions(1).となるのか、またAとBはどちらも「FormatConditions(1).」でダブっているのに処理上エラーを返さないのか、理屈がわかりません。
(1)がつく意味と、AとBはどちらも(1)で(ダブっても)動作するのか(逆にいえば、なぜ最初のFormatConditionsだけ、番号がついていないのか、たぶんデフォルトで(0)の意味?)
について、このへんの仕組みの解説をよろしくお願いします。
ヒントをどうもありがとうございました。
結局こうしました。
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
お礼
ヒントをどうもありがとうございました。 結局こうしました。 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