ロビンは、Excelの条件付き書式設定機能を使用して、セルで使用されているフォントを変更したり、セルのフォントサイズを変更したりする方法があるかどうかを尋ねます。簡単な答えはノーです。それはできません。少なくとも条件付きフォーマットではできません。 (フォント名とサイズを指定できるコントロールは、条件付き書式で使用される書式設定ダイアログボックスでグレー表示されます。)

ただし、マクロを使用してセルの内容を調べたり、セルの外観を変更したりすることはできます。次のマクロについて考えてみます。このマクロは、マクロの実行時に選択したセルを調べます。セルの長さが2文字を超えるか、値が10を超える場合、セルのフォントが変更されます。

Sub DoReformat()

Dim rCell As Range

For Each rCell In Selection.Cells         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

マクロを使用するには、変更するセルを選択してからマクロを実行します。フォーマットをより自動的に変更したい場合は、マクロで特定のセル範囲内で変更が行われたかどうかを確認できます。

Private Sub Worksheet_Calculate()

Dim rng As Range     Dim rCell As Range

Set rng = Range("A1:A10")



For Each rCell In rng         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

このマクロは、ワークシートオブジェクトに追加されると、ワークシートが再計算されるたびに実行されます。前のマクロと同じテストを適用して、範囲A1:A10をチェックします。その結果、セルのフォーマットがチェックされ、継続的に変更されます。マクロに別の範囲をチェックさせるには、マクロの先頭近くでrng変数に割り当てられているアドレスを変更するだけです。

このマクロの欠点の1つは、チェックする範囲が非常に広い場合、マクロが遅くなる可能性があることです。 A1:A10(10セル)をチェックしている場合は非常に速く進みますが、B2:N465(6,000セル以上)を継続的にチェックしている場合ははるかに遅くなる可能性があります。その場合、ワークシートが変更されるたびに実行されるようにマクロを設計することをお勧めしますが、ターゲット範囲内のセルに変更が加えられた場合にのみアクションを実行します。次のバージョンもワークシートオブジェクトに追加されます:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rCell As Range

If Union(Target, Range("A1:A10")).Address = _       Range("A1:A10").Address Then         Application.EnableEvents = False         For Each rCell In Target             If Len(rCell.Text) > 2 Or _               Val(rCell.Value) > 10 Then                 rCell.Font.Name = "Arial"

rCell.Font.Size = 16             Else                 rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12             End If         Next         Application.EnableEvents = True     End If End Sub

マクロはUnion関数を使用して、変更された(Target変数のイベントハンドラーに渡された)セルがチェックする範囲と重複しているかどうかをチェックします。含まれている場合、チェックはターゲット範囲のセルで実行されます。

書式設定に影響を与えるマクロで覚えておくべきことの1つは、マクロによってもチェックされるセルに条件付き書式設定が適用されている場合、条件付き書式設定の書式設定がマクロの書式設定よりも優先されることです。マクロがフォント名とフォントサイズを変更している場合、条件付き書式はこれらの属性に影響を与えないため、これは大きな問題ではありません。ただし、マクロを変更してセルの色などの別の形式属性も変更し、その属性も条件付き形式によって変更された場合、Excelは条件付き形式を優先的に使用するため、マクロが何も実行したようには見えません。マクロが何をするかに。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(2380)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。