Downcodes のエディターでは、Range.Find メソッド、ループ トラバーサル、カスタム関数の 3 つのメソッドをカバーする VBA 名検索コードの詳細な説明が提供され、Excel での VBA 名検索スキルを迅速にマスターするのに役立つ高度なアプリケーションと FAQ が含まれています。この記事では、コードの実装、各方法の長所と短所を詳細に紹介し、実際のアプリケーション シナリオに基づいたより包括的なソリューションを提供します。

名前検索用の VBA コードを作成するには、ループの使用、Excel の検索関数の使用、特定の名前を検索するカスタム関数の使用など、いくつかの方法で実行できます。ここでは、VBAのRange.Findメソッドを使って名前クエリ関数を記述する方法を詳しく紹介します。
VBA では、Range.Find メソッドは非常に強力で、特定のデータを検索するためによく使用されるツールです。この方法を使用して名前検索をコーディングする手順と例を次に示します。
サブ FindName()
ワークシートとしてのディム ws
Set ws = ThisWorkbook.Sheets(Sheet1) '名前リストが Sheet1 にあると仮定します
Dim searchName As String
searchName = 王暁明'これが私たちが探している名前です
薄暗いセルが範囲として見つかりました
Set foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
見つからない場合セルが何もない場合
MsgBox 名前が見つかりました: & searchName & at: & foundCell.Address
それ以外
MsgBox 名が見つかりません: & searchName
終了の場合
エンドサブ
この例では、まず、名前データを含むワークシートを指すようにワークシート オブジェクト ws を設定します。 searchName は検索する名前です。次に、Find メソッドを使用して検索します。対応する名前が見つかった場合は、その名前とその場所がメッセージ ボックスに表示されます。見つからない場合は、メッセージ ボックスがポップアップしてユーザーに通知されます。
探している名前が不規則な領域に散在している場合、またはより複雑な検索条件に一致する必要がある場合、セルを横断する方法はより柔軟になります。
サブ FindNameByLooping()
ワークシートとしてのディム ws
Set ws = ThisWorkbook.Sheets(Sheet1) '名前リストが Sheet1 にあると仮定します
Dim searchName As String
searchName = Zhang San'これが私たちが探している名前です
範囲としての薄暗いセル
ws.usedRange の各セルについて
cell.Value = searchName の場合
MsgBox で名前が見つかりました: & searchName & at: & cell.Address
出口サブ
終了の場合
次のセル
MsgBox 名が見つかりません: & searchName
エンドサブ
このコードでは、For Each ループを使用して、ワークシートの使用されている領域を反復処理します。一致する名前が見つかると、メッセージ ボックスがポップアップして名前とその場所が表示され、Exit Sub を使用してサブルーチンを終了します。トラバースの完了後に見つからない場合は、メッセージ ボックスもポップアップ表示されます。
VBA マクロで直接実行する上記のコードに加えて、Excel セルで数式を直接使用して名前クエリを実行できるカスタム関数 (ユーザー定義関数、UDF) を作成することもできます。
関数 FindNameUDF(文字列としての検索名) 文字列として
ワークシートとしてのディム ws
Set ws = ThisWorkbook.Sheets(Sheet1) '名前リストが Sheet1 にあると仮定します
薄暗いセルが範囲として見つかりました
Set foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole)
見つからない場合セルが何もない場合
FindNameUDF = 見つかった名前: & searchName & at: & foundCell.Address
それ以外
FindNameUDF = 名前が見つかりません: & searchName
終了の場合
終了機能
このカスタム関数 FindNameUDF はどのセルでも使用できます。たとえば、「=FindNameUDF(李思)」と入力すると、ジョンの位置または見つからない情報が返されます。
実際のアプリケーションでは、大文字と小文字の区別、グローバル検索、その他の問題など、いくつかの高度なシナリオに対処する必要がある場合もあります。
サブ FindAllOccurrences()
ワークシートとしてのディム ws
Set ws = ThisWorkbook.Sheets(Sheet1) '名前リストが Sheet1 にあると仮定します
Dim searchName As String
searchName = 王暁明'これが私たちが探している名前です
Dim firstFound As String
薄暗いセルが範囲として見つかりました
Set foundCell = ws.Cells.Find(What:=searchName, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
見つからない場合セルが何もない場合
firstFound = foundCell.Address
する
MsgBox 名前が見つかりました: & searchName & at: & foundCell.Address
foundCell = ws.Cells.FindNext(foundCell) を設定します。
見つからない場合のループCell は何もなく、foundCell.Address <> firstFound
それ以外
MsgBox 名が見つかりません: & searchName
終了する場合
エンドサブ
このコードでは、MatchCase パラメーターが True に設定されて、最初の結果が見つかった後、FindNext メソッドを使用して後続の一致の検索を続け、Do ループ ループを使用して、ワークシート全体が検索されるようにします。最初に見つかったセルのアドレス。
Range.Find、ループ トラバーサル、カスタム関数の使用を組み合わせることにより、特定のニーズに応じて適切な VBA 名クエリ コードを作成できます。上記は、VBA を使用して名前コードをクエリするさまざまな方法です。実際の状況に応じて最適な方法を選択できます。
1. VBA を使用して単純な名前クエリ コードを作成するにはどうすればよいですか?
VBA を使用すると、強力な Excel マクロを作成できます。名前検索コードを作成するには、次の手順に従います。
まず、名前と関連情報のデータを保存する Excel の範囲を選択します。たとえば、名前を列 A に保存し、その他の関連情報を列 B に保存することができます。次に、Excel で Alt+F11 を押して VBA エディターを開きます。 VBA エディターで新しいモジュールを作成できます。新しいモジュールでは、VBA コードを記述して名前クエリ関数を実装できます。たとえば、For ループを使用して名前の列を反復処理し、条件ステートメントを使用して一致する名前が見つかるかどうかを判断できます。最後に、クエリ結果を Excel の別のセルに表示することも、MsgBox 関数を使用してポップアップ メッセージ ボックスとして表示することもできます。上記の手順に従って、名前クエリ関数を実装するための簡単な VBA コードを作成できます。 Excel ファイルを保存するときは、必ずマクロを有効にしてください。
2. VBA コードを記述するときに注意すべき点は何ですか?
VBA コードを作成する場合、コードが正しく実行され、パフォーマンスが最適化されるようにするには、次のような点に注意する必要があります。
グローバル変数の使用を避ける: グローバル変数はプロセス全体に存在し、メモリを占有し、コードのパフォーマンスに影響を与えます。変数の範囲を特定のサブルーチンまたは関数に制限するようにしてください。コメントを使用する: コード内でコメントを使用すると、コードの可読性が向上し、他の開発者がコードの意図をより深く理解できるようになります。各サブルーチンまたは関数に適切なコメントを追加してください。エラー処理: コードに適切なエラー処理を追加すると、予期しない状況によるコードの中断やエラーを回避できます。 On Error ステートメントを使用すると、実行時エラーを捕捉して処理できます。コードを最適化する: ネストされたループや繰り返しの計算を避けるなど、効率的なコーディング手法を使用するようにしてください。ループ内で Exit For ステートメントを使用すると、ループを早期に終了し、コードの実行効率を向上させることができます。3. VBA の名前クエリ コードの機能を拡張するにはどうすればよいですか?
VBA コードは、特定のニーズに合わせて柔軟に拡張およびカスタマイズできます。 VBA 名クエリ コードの機能をさらに拡張したい場合は、次の方法を検討できます。
クエリ条件をさらに追加する: 名前に加えて、年齢、性別などの他のクエリ条件をコードに追加できます。論理演算子 (And、Or など) を使用して、複数のクエリ条件を組み合わせることができます。ファジー クエリを実装する: ユーザーがファジー クエリを実行できるようにする場合は、VBA の Like 演算子を使用できます。たとえば、ユーザーがクエリ内でワイルドカード文字 (* や ? など) を使用して、あいまい一致を表現できるようにすることができます。データベースとの対話: データ量が非常に大きい場合は、データをデータベースに保存し、VBA を使用してデータベースと対話することを検討してください。 ADO (ActiveX Data Objects) を使用してデータベースに接続し、クエリを実行できます。ユーザー インターフェイスの作成: ユーザーがクエリ条件を入力して結果を個別に表示できるようにする場合は、UserForm などのユーザー インターフェイス構築ツールを使用できます。ユーザーフォームにテキストボックスやボタンを追加することで、クエリ条件を入力し、ボタンをクリックすることでクエリ操作を実行できます。上記は、VBA の名前クエリ コード関数を拡張するためのいくつかのアイデアです。実際のニーズに応じてカスタマイズおよび変更できます。強力な VBA コードの作成を頑張ってください。
この記事が、名前クエリに対する VBA の理解と応用に役立つことを願っています。 ご質問がございましたら、お気軽にお問い合わせください。