エクセルのマクロで正規表現の練習 - VBAでもRegExp
2010/06/18
excel
正規表現
エクセルをたくさん使うと何か負けた気がしてしまう今日この頃です。
エクセルなんでもできますね。ほんと。
VBAで正規表現を使うという発想がなかなか浮かばなかったのですが、使えるようになるとかなり便利です。
今回は、テキストボックスのフォームをおいて、ボタンをクリックしたら、入力されたテキストの各行の先頭の空白を削除するというシナリオです。
実は、はまったのはRegExpにMultiLineというプロパティがあるのに気がつかなかったことです。
MultiLineはデフォルトではFalseです。このプロパティがTrueでないと各行の処理をしてくれません。
以下コードです。
Function MyReplace(patrn, target, rep)
Set regEx = CreateObject("VBScript.RegExp")
regEx.MultiLine = True 'デフォルトはFalse
regEx.Pattern = patrn
regEx.Global = True
regEx.IgnoreCase = True
MyReplace = regEx.Replace(target, rep)
End Function
Private Sub CommandButton1_Click()
Dim s
s = TextBox1.Text
'各行の先頭の空白を消します
s = MyReplace("^[ ]+", s, "")
' Debug.Print s
' セルに一行づつ書き出してます。
Dim lines
Dim p
lines = Split(s, vbCrLf)
p = 0
For Each Line In lines
Debug.Print Line
Range("H5").Offset(p, 0).Value = Line
p = p + 1
Next
End Sub
: