VBAマクロと正規表現

VBAマクロと正規表現

目次

はじめに
正規表現とは
正規表現をVBAに使用する
使用例
おわりに

はじめに

少し前にとある案件でExcel内で正規表現の入力チェックの処理を使用することがあったので、その備忘録もかねて本記事を執筆しようと思います。

正規表現とは

正規表現とは簡単にいえば、ひとつの文字列で条件に一致するすべての文字列を表すパターンを作成することができるものです。

正規表現は奥が深く私の言葉では伝えきれない部分もあるので気になる方はこちらの記事ものぞいてみるといいかもしれません。

正規表現をVBAに使用する

今回はExcelのVBAで項目の入力チェックを実施してみようと思います。
こちらのサンプルデータを使って右端の確認欄に結果を出力していきます。

1点事前準備として、VBAの開発ツールを開き参照設定から
“Microsoft VBScript Regular Expressions 5.5″を追加します。

次にサンプルのデータと、サンプルのソースコードを用意します。

サンプルデータはこちらの20個のデータを使用します。

次に、使用するサンプルコードはこちらを用意しました。

Sub SampleCode()
    Dim RE As Object
    Dim stringPattern As String
    
    Set RE = CreateObject("VBScript.RegExp") ''RegExpオブジェクトを定義
    strPattern = "[A-F]"         ''正規表現を定義
    With RE
        .Pattern = strPattern       ''検索パターンを設定
        .Global = True              ''文字列全体を検索
        For i = 3 To 22
            If RE.Test(Cells(i, 2)) = True Then
                msg = msg & "名前" & Cells(i, 3).Value & vbCrLf
            End If
        Next i
    End With
    MsgBox "A~FをIDに含むのは" & vbCrLf & msg & "です"
    Set RE = Nothing
End Sub

正規表現でA~FをユーザーIDに含む人の名前を抽出してメッセージボックスで表示するといったマクロです。
“RegExp オブジェクト.Test(String)”の部分でStringを正規表現で確認して該当すればTrueを返す仕様になっています。
また変数の”strPattern”を変更すればA~F以外の特定の文字や数字を含んだ文字列ののチェックを正規表現で確認できます。

使用例

では実際にExcel内で使用してみましょう。
結果はこのようになりました。

おわりに

Excelであれば正規表現を使わずとも指定したデータの抽出が行える場合が多いので正規表現が必須というわけではありません。しかしメールアドレスや、国内の電話番号といった少し複雑な文字列を指定する場合に非常に役に立ちます。
正規表現の書き方や読み方は身に着けておいて損はないのでこの機会にぜひ触れてみてはいかがでしょうか。