セルの書式については、通常行なっている設定すべてがVBA上から変更できます。
例えば、セルの値で文字色を動的に変更するようなことをやってみます。
(画像をクリックすると、このサンプルがダウンロードできます)
条件付き書式のようですが、条件付き書式は登録する書式自体が3処理しかないのに対し、こちらは条件も書式パターンにも制限はありません。文字色の他、太字、斜体、下線、罫線、パターンなど通常行なえるセル書式について全てがVBAからコントロールできます。
このマクロは、ワークシート上でセル内容が変わったことのイベントで動作させます。このため、「Worksheet_Change」のイベント処理(Sheet1内に記述します。)を使います。
'***************************************************************************************************
' セルの書式操作サンプル Sheet1(Class)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'[TODO:]
'■登録ボタン押下時にそのページの最終更新日時をマスタシートに更新させる
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'03/07/14(1.00)新規作成
'03/11/15(1.01)不具合修正、他
'20/02/21(1.20)xlsm化、他
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
' ■■■ ワークシートイベント ■■■
'***************************************************************************************************
'* 処理名 :Worksheet_Change
'* 機能 :セル値変更イベント
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :Arg1 = Target(Range)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2003年07月14日
'* 作成者 :井上 治
'* 更新日 :2020年02月21日
'* 更新者 :井上 治
'* 機能説明:A1セルの値を監視し文字色を変更する
'* 注意事項:
'***************************************************************************************************
Private Sub Worksheet_Change(ByVal Target As Range)
'-----------------------------------------------------------------------------------------------
' A1セルでなければ処理しない(脱出)
If Target.Address <> "$A$1" Then Exit Sub
' A1セルの内容が数字か判断する
If IsNumeric(Target.Value) = False Then Exit Sub
' 文字色を設定する
Range("$A$1").Font.ColorIndex = Int(Target.Value)
End Sub
'----------------------------------------<< End of Source >>----------------------------------------