VBAで特定の文字列を含む行を表示する方法

Visual Basic

Excel VBAを使用して、特定の文字列を含む行のみを表示させる処理を行いたい場合、適切なコードを組むことが重要です。特に、特定の列(例:T列)に基づいて行の表示・非表示を操作する際、うまく機能しないことがあります。この記事では、Excel VBAを使って特定の文字列を検索し、それを含む行のみを表示する方法を解説します。

VBAを使った特定の文字列検索

VBAを使って特定の文字列を検索するには、「Find」メソッドを使うことが一般的です。このメソッドを使うことで、指定した範囲内で文字列を検索し、そのセルを取得することができます。

以下のコードは、T列から「上司の名前」を検索し、見つかった行を表示するものです。

Set FoundCell = Range("T:T").Find(what:="上司の名前", LookIn:=xlValues, lookat:=xlWhole)

検索結果を基に行を表示する

検索した文字列を含む行だけを表示するためには、まず最初に全ての行を表示に設定し、その後で条件に合った行のみ非表示にすることが一般的です。以下のコードを使うことで、検索結果が見つかれば、その行のみ表示することができます。

次のコードでは、特定の文字列を検索した後、その行を表示します。

myRng.EntireRow.Hidden = False

複数の結果を扱う方法

複数の検索結果を扱う場合、「FindNext」を使って次々に検索を繰り返すことができます。以下のコードは、最初に見つかったセルからさらに次のセルを検索し、検索結果が最初のセルに戻るまで繰り返します。

Set FoundCell = Range("T:T").FindNext(after:=FoundCell)

これにより、T列に含まれるすべての「上司の名前」を検索し、その行を表示することができます。

エラーが発生する場合の対策

コードを実行しても、うまく動作しない場合やエラーが発生することがあります。例えば、検索結果が正しく非表示にならない場合、以下のポイントを確認することが重要です。

  • 範囲設定が正しいか確認する。
  • Findメソッドの引数が正しく設定されているか確認する。
  • 行の非表示処理が適切に設定されているか確認する。

まとめ

Excel VBAを使って特定の文字列を含む行を表示するためには、「Find」メソッドと「FindNext」を適切に使いこなすことが重要です。特に、検索結果が複数存在する場合は、「FindNext」を使って全ての結果を処理する方法を選びます。また、行を非表示にする前に、すべての行を表示に設定しておくことが、エラーを回避するために有効です。

VBAを活用することで、データの管理がより効率的に行えます。ぜひ、この記事を参考にして、VBAの活用方法を学びましょう。

コメント

タイトルとURLをコピーしました