では、実際に書名の検索キーが1つの場合で検索処理を書いてみましょう。
サンプルデータbooks-search.xlsm「図書検索.xlsm」の標準モジュール「T02図書検索キー1つ」に参考コードを掲載しておきます。
【作成手順】
(1) オブジェクトであるワークシートを使いやすいようにSet文を使って、オブジェクト型変数名に置き換えます。
- Dim Ws図書 As Worksheet
- Set Ws図書 = Wb図書.Worksheets("図書")
(2) 図書検索処理を一つのサブプロシージャにしてメイン処理から切り離して機能を分割します。
- Sub 図書検索処理()
- ...
- End Sub
(3) メイン処理からCall文で図書検索処理を呼び出します。
- Call 図書検索処理
(4) 最終レコード行番地を取得。
- 最終行 = Ws図書.Range("A" & Rows.Count).End(xlUp).Row
(5) ワークシート「図書」の3行目から最終行まで検索を繰り返します。
- For 行 =3 To 最終行
- 検索条件
- Next 行
(6) 1つの書名キーで検索するIf文でワイルドカード(*)を使って書名のー部の語でも検索できる。
- If Ws図書.Cells(行, "B") Like "*" & 検索ワード & "*" Then
- 検索条件を満足したときの処理を書く
- End If
(7) ここでは検索結果をイミディエイトウィンドウに表示します。
- Debug.Print 行, Ws図書.Cells(行, "B")
【ワンポイント】 Subプロシージャの実行
書いたコードを実行するには、大きく分けて2つあります、1つはF5 キーで、もう1つは、マクロダイアログ ボックスからの実行です。
* F5 キーで実行
Subプロシージャ内にカーソルがある場合はF5 キーを押すとそのSubプロシージャが実行されます。
当然ですが、Functionプロシージャはこの方法では実行できません。関数ですので、必ずセル内か、Subプロシージャ内でしか実行できません。
* 「マクロ」ダイアログ ボックスで実行
- 1. Alt キーを押してリボンに移動します。
- 2. 左右方向 キーを押して「表示」タブに移動します。
- 3. Tab キーを押して「マクロの表示」に移動してEnter キーを押します。「マクロの表示」のメニューが開きます。
- 4. 「マクロの表示」が選択されているので、そのままEnter キーを押します。「マクロ」のダイアログ ボックスが開きます。
- 5. Tab キーを押して「リスト」に移動し、上下方向 キーを押して実行したいマクロ名に移動します。
- 6. Tab キーを押して「実行」ボタンに移動してEnter キーを押します。