「excel vba find 完全一致」
「excel マクロ find 部分一致」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
Excel VBA(Visual Basic for Applications)の、Range.Findメソッドでセルの検索を行う際に、完全一致検索や部分一致検索を指定するにはどうすればいいのかを探している方による検索でしょうか。
Range.Findメソッドで完全一致検索を行うサンプルマクロ
以下のような引数指定を行えば、完全一致検索となります。
Dim rng As Range
Set rng = _
Range("A:A").Find(What:="東京", LookAt:=xlWhole)
If rng Is Nothing Then
MsgBox "みつかりませんでした。"
Else
MsgBox rng.Row
End If
RangeオブジェクトのFindメソッドの引数・LookAtに、XlLookAt列挙に定義されている定数・xlWholeを指定すると、
完全一致で検索が行われます。
Range.Findメソッドで部分一致検索を行うサンプルマクロ
以下のような引数指定を行えば、部分一致検索となります。
Dim rng As Range
Set rng = _
Range("A:A").Find(What:="東京", LookAt:= xlPart)
If rng Is Nothing Then
MsgBox "みつかりませんでした。"
Else
MsgBox rng.Row
End If
RangeオブジェクトのFindメソッドの引数・LookAtに、XlLookAt列挙に定義されている定数・xlPartを指定すると、
部分一致で検索が行われます。
Range.Findメソッドの引数は残念
オブジェクトブラウザーで確認するとわかるとおり、RangeオブジェクトのFindメソッドは引数を9つも指定することができます。
このうち、引数・SearchDirectionだけは「As XlSearchDirection」という作りになっているため、
コーディングの際に、XlSerchDirection列挙に定義されている定数が自動メンバー表示されますが、この記事のテーマである完全一致・部分一致を指定する引数・LookAtは、どういうわけだか「LookAt As XlLookAt」のような作りになっていません。
そのため、コーディング時に自動メンバー表示されません。残念。
Microsoftが、引数・SearchDirectionを「As XlSearchDirection」という作りに修正したときに、何故、引数・LookAtも「As XlLookAt」という形にしなかったのか、疑問が残る仕様です。
- Newer:コードを入力するより説明を聞くべきだった
- Older:オブジェクト変数がオブジェクトを参照しているかどうかを調べるには
Home » Excel VBA Rangeオブジェクト » セル検索 » Findで完全一致・部分一致を指定して検索するには