ぼくらの勉強

ぼくらのための勉強をしていきます。

【VBA】ワイルドカードの置換をする

      2016/12/11

VBA

スポンサーリンク

コード内容

先にコードから紹介します。


Sub ワイルドカード置換()

Cells.Replace what:="abc*", Replacement:="1番目の置換", _
 LookAt:=xlWhole

Range("A1:A500").Replace _
 what:="?xyz", Replacement:="2番目の置換", _
 LookAt:=xlWhole

Range("B1:C500").Replace _
 what:="~?edf", Replacement:="3番目の置換", _
 LookAt:=xlPart

Range("D1:D500").Replace _
 what:="#?2??3??00", Replacement:="4番目の置換", _
 LookAt:=xlPart

Range("E1:E500").Replace _
 what:="~*", Replacement:="5番目の置換", _
 LookAt:=xlPart

Range("F1:F500").Replace _
 what:="~~", Replacement:="6番目の置換", _
 LookAt:=xlPart

If Range("G1").Value Like "1[?]*" Then
    Range("G1").Value = "7番目の置換"
End If

MsgBox "置換完了"

End Sub

スポンサーリンク

コードの説明

まずVBAのワイルドカードを備忘録的に書いておく。

?(クエスチョン、はてな) 任意の1文字
#(シャープ) 任意の1文字の半角数字 (0-9)
*(アスタリスク) 任意の数の文字※0文字は適用外

 

1番目の置換は「最初の3文字がabcで始まっているならその後どう続いてようがまとめて置換する」というもの。
2番目の置換はA1からA500の範囲で「最初の1文字はなんでもいいけどその後xyzと続いていたら置換する」というもの。完全一致。
3番目の置換はB1からC500の範囲で「?(クエスチョンマーク)の後にedfと続いていたらその部分を置換する」というもの。
4番目の置換はD1からD500の範囲で「最初が数字で始まっていて、その後2○○3○○00と続いていたらその部分を置換する」というもの。○に入るものは何でもいい。
5番目の置換はE1からE500の範囲で「*(アスタリスク)の部分を置換する」というもの。
6番目の置換はF1からF500の範囲で「~(チルダ)の部分を置換する」というもの。
7番目の置換はG1が「1、?(クエスチョンマーク)と始まっているならその後どう続いていようがまとめて置換する」というもの。

 

お気づきかもしれないがワイルドカード記号そのものを置換する時、Like関数とReplaceメソッドと扱い方が違う。

Like関数はワイルドカード記号を[](かっこ)で挟む必要があるし、Replaceメソッドはワイルドカード記号の前に~(チルダ)を入れる必要がある。注意すべし。

ぼくは「Likeは[](かっこ)、Replaceは~(チルダ)」と覚えた。ほんとはこういう覚え方はしちゃいけないんだろうけど。

VBAのIE操作を覚えるのに一番良いと思う本(ぼくはこれで覚えました)

 - VBA