2

1 つのセルの値比較に基づいて色を変更する条件付き書式を作成しましたが、この書式を列全体や他の列に適用する方法がわかりません。(すべてのセルの書式を設定するために for ループを使用する必要がありますか?)

'add conditionalFormating for one cell.
 Set rngCell = Cells(6, 7)
 Set objCF = rngCell.FormatConditions.Add _
            (Type:=xlExpression, _
            Formula1:="=" & rngCell.Address & " > " & rngCell.offset(, -3).Address)
'set formats for new CF

With objCF
    .Font.ColorIndex = 26
    .Interior.ColorIndex = 19
End With

前もって感謝します

4

1 に答える 1

1

残念ながら、Excel 2007/2010には、以前のバージョンほど広範なマクロ記録機能がありません。

条件付き書式を適用するときに他のセルを参照している場合は、それを1つのセル(実行方法を知っている)に適用してから、書式を列の残りの部分にコピーすることをお勧めします。列に入力する場合、これにより、保持したい他のセル形式が失われることはありません。

だから私はあなたのコードを

rngCell.FormatConditions.Delete

次に、フォーマットが追加されると、次のように使用できます。

rngCell.Copy
rngOut.PasteSpecial xlPasteFormats

、ここで、rngOutは、rngCellで始まり​​、テーブルの最後の行まで埋めることとして定義されます。

他の列に適用するには、オフセットが異なるため、おそらく別の数式が必要になります。必要なコードを最小限に抑えるために、テーブルのヘッダーのすぐ上の非表示の行に、必要なフォーマット/条件付きフォーマットのフルセットをいつでも手動で追加できます。次に、フォームのコードを使用して、これらすべてをテーブルにコピーできます...

Range("A1:J1").Copy
Range("A3:J100").PasteSpecial xlPasteFormats

...フォーマットされた行を行1に追加するときに、ヘッダーが行2にプッシュダウンされると想定した場合

上記の例ではセルアドレスを参照しましたが、範囲名を参照し、セル表記を使用することを常にお勧めします。たとえば、Range( "A1")はCells(1、1)です。テーブルの列を定義するための範囲名の使用については、このエキスパートExcelビデオで詳しく説明されています。メリットは計り知れません...ヘッダー行が範囲名で定義されている場合、コードを書き直すことなく、テーブルの上に新しい行を挿入できます。

于 2012-04-24T11:01:07.053 に答える