ユーザーフォームで複数シートを検索して、一致したら該当セルをアクティブにする方法をご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひお試しください!
ユーザーフォーム作成
ユーザーフォームを作成します。
Excelシート
A列~D列にデータが入っています。
ユーザーフォームで、A列を検索します。
「Sheet1」にマクロボタンを設置します。
以下コードを標準モジュール「Module1」に入力して、
ボタンをクリックしたときに、ユーザーフォームが開くようにします。
Sub ボタン1_Click()
UserForm1.Show vbModeless
End Sub
マクロコードを「Module1」に入力した画面
マクロコードを入力
マクロコードを「UserForm1」に入力します。
Private Sub CommandButton1_Click()
'検索ボタンをクリックしたときの処理
Dim Target As String
Dim Ws As Worksheet
Dim Chk As Boolean
Dim i As Long
'発見フラグを初期化
Chk = False
'テキストボックスに入力した値を変数代入
Target = Me.TextBox1.Text
'テキストボックスが空じゃなかったら
If Target <> "" Then
'全シートをループ
For Each Ws In Worksheets
'シート選択
Ws.Select
'各シートのA列の1行目から最終行までループ
For i = 1 To Ws.Cells(Rows.Count, 1).End(xlUp).Row
'テキストボックスに入力した値が見つかったら
If Cells(i, 1) = Target Then
'該当シートの該当セルを選択状態にする
Ws.Cells(i, 1).Select
'発見フラグ
Chk = True
'ジャンプ
GoTo MyJump
End If
Next i
Next Ws
Else
'管理番号を入力してない場合
MsgBox "管理番号を入力してください"
Exit Sub
End If
MyJump:
If Chk = False Then
MsgBox "管理番号が見つかりませんでした"
Else
MsgBox "管理番号が見つかりました"
End If
End Sub
Private Sub CommandButton2_Click()
'閉じるボタンをクリックしたときの処理
Unload UserForm1
End Sub
マクロコードを入力する場所「UserForm1」
動作
ユーザーフォームのテキストボックスに値を入力して、
「検索」ボタンをクリックします。
検索値が見つかった場合、該当シートの該当セルを選択状態にします。
メッセージボックスに「管理番号が見つかりました」と表示します。
検索値が見つからない場合、
メッセージボックスに「管理番号が見つかりませんでした」と表示します。
テキストボックスが空欄のまま「検索」ボタンをクリックした場合、
メッセージボックスに「管理番号を入力してください」と表示します。
この記事がお役に立ちますと幸いです。
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
【VBAユーザーフォーム】何ができるの?:使用例34選
...
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク