【ExcelVBA】セルの書式設定の表示形式が「日付」と「文字列」のセルをマクロで調べて色分けする

Excel VBA セルの書式設定

今回は、表示形式が「日付」と「文字列」に設定されているセルを塗りつぶすマクロを作成します。

表示形式が「日付」と「文字列」のセルを色分けするマクロの作成

開発タブ → Visual BasicをクリックしてVBEを起動します。

前回と同じ「標準モジュール」のModule1を選択して次のコードをコピーして貼り付けます。

Sub 表示形式が日付のセルをベージュで塗りつぶす()

Dim search_Cell As Range
Dim Flag As Boolean

For Each search_Cell In Range("A1:G21")

If search_Cell.NumberFormatLocal = "yyyy""年""m""月""d""日"";@" Or _
search_Cell.NumberFormatLocal = "yyyy/m/d;@" Or _
search_Cell.NumberFormatLocal = "yyyy/m/d" Or _
search_Cell.NumberFormatLocal = "[$-F800]dddd, mmmm dd, yyyy" Then

search_Cell.Interior.ColorIndex = 40 'セルをベージュで塗りつぶします。
Flag = True

End If

Next search_Cell

If Flag = True Then 'ループ終了後にメッセージを表示する。

MsgBox "セルの書式設定の表示形式が「文字列」のセルをベージュで塗りつぶしました。"

Else

MsgBox "セルの書式設定の表示形式が「文字列」のセルはありません。"

End If

End Sub

Sub 表示形式が文字列のセルをアイボリーで塗りつぶす()

Dim search_Cell As Range
Dim Flag As Boolean

For Each search_Cell In Range("A1:G21")

If search_Cell.NumberFormatLocal = "@" Then

search_Cell.Interior.ColorIndex = 19 'セルをアイボリーで塗りつぶします。
Flag = True

End If

Next search_Cell

If Flag = True Then 'ループ終了後にメッセージを表示する。

MsgBox "セルの書式設定の表示形式が「文字列」のセルをアイボリーで塗りつぶしました。"

Else

MsgBox "セルの書式設定の表示形式が「文字列」のセルはありません。"

End If

End Sub

ボタンを作成してマクロの登録

マクロを実行する「日付」と「文字列」のボタンを二つ作成します。

エクセルのSheet1を表示して「開発」タブ →「挿入」→「ボタン(フォームコントロール)」をクリックします。

日付のボタンを作成したい場所をマウスでドラッグします。

マクロの登録ダイアログボックスが表示されるので、マクロ名から「表示形式が日付のセルをベージュで塗りつぶす」を選択して、OKボタンを押します。

次に、文字列のボタンを作成したい場所をマウスでドラッグします。

マクロ名から「表示形式が文字列のセルをアイボリーで塗りつぶす」を選択し、OKボタンを押します。

これで二つのマクロがボタンに登録できました。

作成した「ボタン4」を右クリックして「テキストの編集」を選択し、表示を「日付」にします。「ボタン5」の表示は「文字列」にします。

ボタンに登録したマクロの実行

作成した「日付」のボタンをクリックすると、セルの書式設定の表示形式が「日付」に設定されているD4のセルがベージュで塗りつぶしされます。

そして、「文字列」のボタンをクリックすると、セルの書式設定の表示形式が「文字列」に設定されているD5のセルがアイボリーで塗りつぶしされます。

受注番号を入力するセルは表示形式が「標準」や「数値」だと「0」から始まる数字を0127と入力した場合に、先頭の「0」が消えて127 になってしまうので、これを防ぐために表示形式を「文字列」にしてあります。

次回は文字の背景色をクリアするボタンを作成してマクロを完成したいと思います。