テーブルの条件付き書式設定マクロ (Jeeped に感謝) があり、これを拡張して、さまざまなワークシートのすべてのテーブルをループ処理したいと考えています。これは最も効率的なアプローチではないと思いますが、一緒に石畳にできる最善の方法であり、それでも機能していません。これまでのところ、私は以下の2点で立ち往生しています。どんな支援も大歓迎です!
1) ws を複数のワークシート コードネームに等しく設定する (例: Set ws = Worksheets(5,6,7)
)
2) 実行時エラーなしで範囲を設定すると、Set myRange = ws.ListObjects.DataBodyRange
「実行時エラー '438': オブジェクトはこのプロパティまたはメソッドをサポートしていません」が生成されます。
現在のコードは次のとおりです。
Sub ConditionalFormatting()
Dim ws As Excel.Worksheet
Dim lo As Excel.ListObject
Dim myRange As Range
Set ws = Worksheet(5) 'Would like to expand to include multiple worksheets!
Set myRange = ws.ListObjects.DataBodyRange
For Each lo In ws.ListObjects
With lo.FormatConditions
.FormatConditions.Delete
Call FormatRange(myRange, 10, "$E5=INDEX(Location,1,1)") 'Warehouse1
Call FormatRange(myRange, 10, "$E5=INDEX(Location,2,1)") 'Warehouse2
Call FormatRange(myRange, 10, "$E5=INDEX(Location,3,1)") 'Warehouse3
End With
Next lo
End Sub
Public Sub FormatRange(r As Range, clr As Integer, frml As String)
r.FormatConditions.Add Type:=xlExpression, Formula1:=frml
r.FormatConditions(r.FormatConditions.Count).Font.colorindex = clr
With r.FormatConditions(1).Borders(xlTop)
.LineStyle = xlContinuous
.Color = color
.TintAndShade = 0
.Weight = xlThin
End With
With r.FormatConditions(1).Borders(xlBottom)
.LineStyle = xlContinuous
.Color = color
.TintAndShade = 0
.Weight = xlThin
End With
r.FormatConditions(1).StopIfTrue = False
End Sub