Excel VBAで正規表現オブジェクトを使ってみる(VBScriptのRegExpオブジェクトを呼び出す)
お試しで書いてみたもの。計算結果のセルを目立たせるため、sum関数のあるセルの背景色を一括変更しようと作ったものです。
Excel VBA単体では正規表現が使えないため(Like演算子で代替可能なこともある*1 )、VBScirptのエンジンを呼び出して、VBのRegExpオブジェクトを使用します。
- CreateObjectを使う方法とエディタで参照設定して使う方法がありますが、今回は後者を使用しています。
- メソッドは、RegExp.testとRegExp.execute、RegExp.Replaceの3種類。
- testは一致不一致をbooleanで返します。
- executeを使うと結果がMatchesコレクションで返され、一致回数や後方参照など詳細解析ができます。
- Replaceは文字列置換。
参考
Sub regexpの実験() 'RegExpオブジェクトとMatchesコレクション(Matchオブジェクト)の使い方テスト Dim test_regex As RegExp Dim r As Range Set test_regex = new RegExp 'sum関数のあるセルの背景色を変える With test_regex .Pattern = "SUM\(" '正規表現のパターン。記号のエスケープ注意(特に2重引用符) .IgnoreCase = True '大文字小文字を区別しないときはTrue。デフォルトfalse。 .Global = True '/g の設定。デフォルトFalse For Each r In ActiveSheet.UsedRange If .test(r.Formula) Then r.Interior.ColorIndex = 3 Next r End With Set test_regex = Nothing 'オブジェクト開放? End Sub