
エクセルの標準機能にある検索ボックスも便利なんだけど、
作業しているうちに邪魔になるときがある…。
エクセル内に検索ボックスを作って、マクロで検索できない?

なるほど…。
では今回は、「エクセルのマクロで検索ボックスを作成する方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
エクセルのマクロで検索ボックスを作成する方法
「Find」を使って検索ができるマクロを作り、検索ボタンで実行できるように登録します。
まずは完成見本をどうぞ。
完成見本
ひとまず全コードと実行結果をご覧ください。
解説は後ほど行います。
実行結果
今回は、「Sheet2」の「A1セル」に入力された検索ワードを、「Sheet1」の中から検索するというマクロです。

検索ボタンを押して値が見つかれば、そのセルにジャンプするという仕様です。
全コード
Sub 検索()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim searchValue As String
Dim foundCell As Range
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
searchValue = ws2.Range("A1").Value
If searchValue = "" Then
MsgBox "Sheet2のA1セルに検索する値を入力してください。", vbExclamation
Exit Sub
End If
Set foundCell = ws1.Cells.Find(What:=searchValue, LookAt:=xlPart, MatchCase:=False)
If Not foundCell Is Nothing Then
Application.Goto foundCell, True
MsgBox "見つかりました: " & foundCell.Address, vbInformation
Else
' 見つからなかった場合
MsgBox "見つかりませんでした。", vbExclamation
End If
End Sub
手順
手順は以下のとおりです。
- 検索ボックスの作成
- マクロの作成
- 検索ボタンの作成・マクロの登録
まずは検索ボックスを作成しましょう。
検索ボックスの作成
下図のとおり、「Sheet1」に検索したいデータを用意します。

次に、「Sheet2」に検索ボックスを作成するわけですが、
今回はA1セルを検索ボックスの代わりにしているため、特にやることはありません。
わかりやすくするために、セルの色を変えるくらいでしょうか。

次に、A1セルの横に検索ボタンを作りたくなりますが、その前にマクロを作成しましょう。
マクロの作成
全コードで紹介したコードを貼り付けるだけでOKです。
コードを貼る場所などマクロの基礎解説は、下記記事をご参考ください。
【簡単な解説】
2~5行目:変数の宣言
7~8行目:シートの取得
10行目:検索ワードの取得
12~15行目:検索ワードが入力されてない場合の処理
17行目:部分一致検索
19~25行目:検索ワード見つかった場合・見つからなかった場合の処理
「変数や宣言」「If文」については、下記記事をご参考ください。
マクロが完成したら、実行テストをしてみましょう。
「Sheet2」の「A1セル」に検索ワードを入力し、実行ボタンを押して動作をチェックしてみてください。

検索ボタンの作成・マクロの登録
マクロの動作チェックが終わったら、「検索ボタン」を作成してマクロを登録しましょう。
手順は以下のとおりです。
- エクセル画面に移行する
- 「開発」→「挿入」から「フォームコントロールボタン」を選択
- 設置したいセル周辺をクリック
- 「マクロの登録」画面で作成したマクロを選択
詳しくは下記記事で解説しております。ご参考ください。
ボタンの作成とマクロの登録ができたら、ボタンを押して動作を確認してみましょう。
▼検索ワードが見つかった場合

▼検索ワードが見つからなかった場合

▼検索ワードが入力されていなかった場合

うまく動作しないときの対処法
エラーが発生する
コンパイルエラー・実行時エラー
コードに問題がある場合が多いです。
「”」や()など、2つセットの記号が片方だけになっていないかなど、コードを再確認しましょう。
セル名を「”」で囲っていない場合でもエラーが発生します。
警告表示

上記の表示が出た場合は、マクロが無効になっています。
エクセルに表示された「コンテンツの有効化」をクリックするか、下記記事を参考にセキュリティ設定を変更してください。
最後に
VBAマクロを使って、検索ボックスを作成する方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!