BizFAQ-ビズファックBizFAQ-ビズファック仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。GenVBAで「検索」を実装しようとした場合結構大変な作業になりますが、Excelの「検索」機能を使えば簡単に実装できます。Excelの「検索」機能はFindメソッドでアクセスできます。FindメソッドをVBAで扱うと結構癖が強いですが、全部パターン化させてしまいましょう。Whileの知識を組み合わせて実装するのが一番簡潔なので今回はそれを紹介します。核の部分は変わらず、条件判断の記述などでいくつかパターンがあるので、今回紹介した方法以外でも試してみてください。[After])だけです。見つかったセルをRange型として返し、見つからない場合はNothingを返します。文字列型で検索対象の文字列を指定します。Range型で指定されたセルより、後ろ側のセルを検索します。VBAでサンプルを作ってみましょう。2.サンプルを作ろうサンプルデータを入力しました。Subまずセル全体から”Hello”を検索し、最初に見つかったセルを代入します。その後TargetCellより後で見つかったセルでTargetCellを上書きしています。Msgboxは動きを見やすくするために入れました。コメントアウトすると一瞬で終わってしまいます。Findは一番最後のセルを検索した後、ループして一番最初のセルを返すようになります。While処理をないと無限ループに陥りますので注意してください。実行した画像がこちらになります。3.応用してみよう先程の例は順番に選択するだけでしたが、次はセルのアドレスを全部つなげて出力してみたいと思います。VBAのコードは以下になります。Sub実行した画像がこちらになります。本来ならResultの行頭の改行コードを除去すべきですが、サンプルということでご容赦ください。今回はFindメソッドを解説しました。癖の強いメソッドですが自前で実装するより、速度面でもメンテナンス性でもとても頼りになるメソッドです。今回のサンプルコードで検索して見つかったセル、一つ一つについて処理できるようになりました。応用の幅はとても広いですので是非チャレンジしてみてください。