findメソッド

【VBA】Findメソッドの応用的使い方と注意(大文字小文字、半角全角、コメントの検索)

記事内に商品プロモーションを含む場合があります

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が取れました

半角全角の検索

今度は以下のように表を作りました。
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(マクロ)のおすすめの学習方法 こんにちはhokkyokunです。 VBAを学ぶことで確実に業務は効率化し、余裕をもって仕事をすることができるようになります。 ...

VBAを高コスパで、短期間で学ぶにはUdemyがおすすめです。
Udemyは良質の学習プラットフォームですが、
動画数が多すぎてどれを見ればよいか迷います。

おすすめの講師をまとめました。

【Udemyは講師で選べ!】UdemyがVBA学習に最適な理由とおすすめのVBA講師 こんにちはhokkyokunです。 巨大学習プラットホームUdemyの中からVBAに関する動画について講師に焦点を当ててまとめま...

Findメソッドの他の記事です。

ブログ村ランキング参加中です。よかったらフォローお願いします!!

PVアクセスランキング にほんブログ村