各セルを読み込んで特定文字がある場合、背景色を黄色く強調するVBAのサンプルコード(正規表現バージョン)

記事内に広告が含まれています。
《スポンサーリンク(広告)》

※エンジニアは英語必須!業界初の定額レッスン無制限!オンラインで英語を学習しませんか?

《スポンサーリンク(広告)》

以前、Excelのヘッダー行を除く各セルをループで読み込んで特定文字がある場合、背景色を切り替えるVBAのサンプルをInStrで実現しました。

「~という文字列を含む」という程度の文字列検索の場合はこれでよいのですが、細かい文字列条件の検索は正規表現を使用する必要があります。

《スポンサーリンク(広告)》

coconalaはロゴデザイン、Webマーケティング、副業のあらゆるスキルのマーケットです(ビジネス・個人問わないサービス)

《スポンサーリンク(広告)》

仕様

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.環境バージョン
1OSWindows10
2ExcelExcel2016
環境一覧

以上です。

コメント

タイトルとURLをコピーしました