Findメソッドの応用的な使い方ができるようになります。
- 大文字と小文字(Appleとapple)を区別して検索
引数MatchCase
True→大文字小文字を区別する、False→区別しない - 半角と全角(リンゴとリンゴ)を区別して検索
引数MatchByte
True→全角半角を区別する、False→全角半角を区別しない - コメントの中身を検索
引数LookInをxlComentsにする
また、使用後は必ず引数の設定を初期化すること
しないと、次回の検索でうまくヒットしないかも!!
Findメソッドに関して
いくつか記事を書いています。
よかったら見てやってください。
大文字小文字の検索
表を下記のように作りました。
A2のappleではなく、
A7のAppleを検索したい場合を考えます。
Sub findmethodMatchCase()
Dim table As ListObject
Set table = ActiveSheet.ListObjects(1)
Dim srcRng As Range '検索する範囲
Dim fndRng As Range 'findメソッドで検索したセル範囲
Set srcRng = table.Range
'検索する値はApple(appleではない)、MatchCaseをTrueにする
Set fndRng = srcRng.Find(what:="Apple", lookat:=xlWhole, MatchCase:=True)
MsgBox ("大文字は:" & fndRng.Address)
End Sub
半角全角の検索
今度は以下のように表を作りました。
A2の「リンゴ」は全角、A7の「リンゴ」は半角です。
全角ではなく、半角のリンゴを検索したいという場合のマクロを考えます。
Sub findmethodMatchByte()
Dim table As ListObject
Set table = ActiveSheet.ListObjects(1)
Dim srcRng As Range '検索する範囲
Dim fndRng As Range 'findメソッドで検索するセル範囲
Set srcRng = table.Range 'テーブル化した全範囲
'検索する値は半角のリンゴ(全角のリンゴではない)、MatchByteをTrueにする
Set fndRng = srcRng.Find(what:="リンゴ", MatchByte:=True)
MsgBox ("半角のリンゴは:" & fndRng.Address)
End Sub
結果は半角の方のリンゴのセル位置を取得できました。
コメントの検索
次はコメントを検索する方法です。
以下のようにコメントが入っている表を作りました。
A2のコメントではなく、A7のコメントを検索したいと思います。
Sub findmethodComments()
Dim table As ListObject
Set table = ActiveSheet.ListObjects(1)
Dim srcRng As Range '検索する範囲
Dim fndRng As Range 'findメソッドで検索するセル範囲
Set srcRng = table.Range 'テーブル化した全範囲
'コメント「コメントだよ」を検索、LookInをxlCommentsに
Set fndRng = srcRng.Find(what:="コメントだよ", LookIn:=xlComments)
MsgBox ("「コメントだよ」のコメントを入れたセルは:" & fndRng.Address)
End Sub
注意!これをしないと次回うまく検索できないかも!
Findメソッドの引数のうち、
LookIn、LookAt、SearchOrder、MatchByteは設定が保存されるので、
次に使う場合は注意してください。
以下のコードを最後に入れておくと、
設定を初期化できます。
もし不具合あるようでしたら試してみてください。
rng.Find(what:="", _
LookIn:=xlValues, _
LookAt:=xlWhole, _
MatchCase:=False, _
MatchByte:=False, _
SearchFormat:=False)
まとめ
ちょっとマニアックな内容でしたが、
もしかしたら日々の業務で知っていると
業務が短縮できるアイデアにつながるかもしれないです。
以下の検索方法を紹介
- 大文字と小文字(Appleとapple)を区別して検索
- 半角と全角(リンゴとリンゴ)を区別して検索
- コメントの中身を検索
使用後は必ず引数を初期化すること
自動で初期化はされない。
Findメソッドは実は使い方が難しく、
仕様上エラーも発生しやすいです。
VBAの学習方法をまとめました。
VBAを高コスパで、短期間で学ぶにはUdemyがおすすめです。
Udemyは良質の学習プラットフォームですが、
動画数が多すぎてどれを見ればよいか迷います。
おすすめの講師をまとめました。
Findメソッドの他の記事です。
ブログ村ランキング参加中です。よかったらフォローお願いします!!