キーワードを含むシート上のセルを次々検索していきます。サンプルコードではアクティブセルの位置から下へ向かって(列方向に)検索されます。その列が完了すると右側の列に移ります。なお次項の第四回 データを複合条件で抽出するは同じデータを使って作りました。これらをご覧になれば、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
———————————————————————————————————–
サンプルファイルはこちらからダウンロードすることが出来ます。
∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞