​ExcelVBA小技教室

第三回 キーワードを次々に検索する

ブックを開くと「連続検索」ボタンと「絞り込み抽出」ボタンがあります。

キーワードを含むシート上のセルを次々検索していきます。サンプルコードではアクティブセルの位置から下へ向かって(列方向に)検索されます。
その列が完了すると右側の列に移ります。なお次項の第四回 データを複合条件で抽出するは同じデータを使って作りました。これらをご覧になれば、ExcelにおいてもAccessに負けないデータベースプログラムが構築できることがお分かりになると思います。

「連続検索」ボタンで「曖昧連続検索」フォームを表示させます。

「鈴木」で「検索」ボタンを押すと最初の「鈴木」へ跳びます。

「次へ」ボタンで次の「鈴木」へ跳びます。

1.シートのイベントプロシージャ

------------------------------------------------------------------------------------
Private Sub ボタン2_Click()’ボタン2をクリックしたときのイベントプロシージャ。

   Unload UserForm9’ UserForm9を初期化(空白)にする。
   UserForm9.次へ.Enabled = False’ボタン「次へ」を使用不可に。
   UserForm9.Label1.Caption = "検索値を入れて検索ボタンを押してください。"’Label1のキャプションを変える。
   UserForm9.Show vbModeless’シート変更可能な状態でUserForm9を表示。

End Sub

------------------------------------------------------------------------------------

2.Userform9のプロシージャ

------------------------------------------------------------------------------------

Private Sub 検索_Click()’「検索」ボタンをクリックしたときのイベントプロシージャ。

Dim 検索値 As String’変数を宣言。

   On Error GoTo errhandler’この行より下でエラーが起きたら場合はerrhandler:の行へ跳ぶ。
   検索値 = TextBox1.Value’変数「検索値」にTextBox1の値を代入。

   If 検索値 = "" Then’検索値 が空欄の場合。
      MsgBox "検索する語句を入れてください。"’メッセージを表示。
      TextBox1.SetFocus’TextBox1にカーソルを移動。
   Else
      Cells.Find(What:=検索値, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
      xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
      False, MatchByte:=False).Activate
       ’シート上の全セルを対象に、アクティブセルの次から、
       ’列方向に検索、その際に大文字小文字・全角半角は区別しない。


      検索.Enabled = False’ボタン「検索」を使用不可に。
      次へ.Enabled = True’ボタン「次へ」を使用可に。
      Label1.Caption = "次をさがすには「次へ」ボタンを押してください。"’Label1のメッセージを変える。

errhandler:’
      Select Case Err.Number’エラーコードが次のケースのとき。
         Case 91’エラーナンバー91=検索値が存在しない場合。
         MsgBox "その検索値は存在しません。"’メッセージを表示する。
      End Select
   End If

End Sub

------------------------------------------------------------------------------------
Private Sub 次へ_Click()’「次へ」ボタンをクリックしたときのイベントプロシージャ。

   Cells.FindNext(After:=ActiveCell).Activate’次を検索。

End Sub

------------------------------------------------------------------------------------
Private Sub 閉じる_Click()’「閉じる」ボタンをクリックしたときのイベントプロシージャ。

   UserForm9.Hide’UserForm9を非表示に。

End Sub

------------------------------------------------------------------------------------

 

サンプルファイルはこちらからダウンロードすることが出来ます。

∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞

人事システム、不動産システムなら

データベースシステム開発  エクセル工房Inage