以前、Excelのヘッダー行を除く各セルをループで読み込んで特定文字がある場合、背景色を切り替えるVBAのサンプルをInStrで実現しました。
「~という文字列を含む」という程度の文字列検索の場合はこれでよいのですが、細かい文字列条件の検索は正規表現を使用する必要があります。
仕様
InStr版と画面は同じで、下記の通り表とマクロ実行用のボタンを用意しています。
今回は正規表現を「^か」とし、セル内の文字列が「か」で始まった場合に背景色を黄色にします。
.Pattern = "^か" '正規表現パターン
ボタン押下後に表内のセルを全て検索して、正規表現に一致した場合、場合に背景色を切り替えます。
また、前回と同様にヘッダー行は検索対象から除いています。
ソースコード
Sub ボタン1_Click()
'正規表現オブジェクトの設定
Dim reg As Object
Set reg = CreateObject("VBScript.RegExp")
With reg
.Pattern = "^か" '正規表現パターン
.IgnoreCase = False '大文字と小文字を区別する
.Global = True '文字列全体を検索するか(True)
End With
'対象範囲を選択する(ヘッダー行は除く)
With Range("A3").CurrentRegion
'そのままだとA1:C7まで選択されるので、
'行数を7行から5行へ2行減らす、かつアクティブセルをA1からA3まで2行ずらす
.Resize(.Rows.Count - 2).Offset(2).Select
End With
'選択したセル範囲を全てループ
For Each c In Selection
If reg.Test(c.Value) Then
'背景色を黄色にする
c.Interior.Color = ColorConstants.vbYellow
Else
'背景色を白色にする
c.Interior.Color = ColorConstants.vbWhite
End If
Next
End Sub
設定
なお今回は正規表現を使用しますので、下記の設定を追加でしておく必要があります。
設定内容
開発ツールの「Microsoft Visual Basic for Applications」のメニューバー「ツール(T) 」> 「参照設定(R)…」を順にクリックします。
「参照設定 – VBAProject」から「Microsoft VBScript Regular Expressions 5.5」を選択します。
テスト実行
ボタンを押すと下記の通り、正規表現「^か」に一致した場合、背景色が黄色に切り替わっています。
この正規表現は文字列が「か」で始まった場合という意味ですので、該当しない「すいか」や「めだか」にはヒットしません。
参考情報
環境
下記の環境で作成・実行しております。
No. | 環境 | バージョン |
---|---|---|
1 | OS | Windows10 |
2 | Excel | Excel2016 |
以上です。
コメント