2

Excelで行う(半)複雑な条件付き書式がいくつかあります。メニューを使用して問題なく動作させることができますが、複数のシートに適用したいので、プログラムで実行したいと思います(コピー、フォーマットとしての貼り付けは機能しません)。

コードを取得するためにCFを設定しているときにマクロを記録しようとしましたが、そのタイプのエントリは記録されません。

現在適用しているルールは次のとおりです。=$1:$ 65536

=OR(COLUMN()=1,COLUMN()=2,ISBLANK($B1))
=AND(LEFT($A1,6)="Base (",A1>100)
=AND(LEFT($A1,6)="Base (",A1>=75,A1<=100)
=AND(LEFT($A1,6)="Base (",A1>=50,A1<75)
=AND(LEFT($A1,6)="Base (",A1<50)
=$B1-9.999  (current cell is less than this value)

私が言ったように、あるシートから次のシートに列全体をコピーすることでこれを手動でコピーできますが、すべてのシートにコピーすることはできません。マクロとして実行できるようにする方法を見つけたいと思います。新しいワークブック(10〜15枚になる傾向があります)に簡単に適用できます。

4

1 に答える 1

6
Sub DoCFRules()

    Dim rng As Range
    Set rng = ThisWorkbook.Sheets("Sheet1").Cells

    rng.Parent.Activate
    rng.Cells(1).Select 'Important!

    ApplyCF rng, "=OR(COLUMN()=1,COLUMN()=2,ISBLANK($B1))", RGB(0, 255, 0)
    ApplyCF rng, "=AND(LEFT(A1,6)=""Base ("",A1>100)", RGB(255, 0, 0)
    'etc...

End Sub

Sub ApplyCF(rng As Range, sFormula As String, clr As Long)
    With rng.FormatConditions.Add(Type:=xlExpression, Formula1:=sFormula)
        .Interior.Color = clr
    End With
End Sub
于 2011-11-29T21:44:43.750 に答える