ユーザーフォームでシート内を検索して、一致したらリストボックスに表示にする方法をご紹介します。
さらにリストボックスをクリックすると、
該当セルを選択するように作ってみました。
動画で動作確認ができます👇
ユーザーフォーム作成
ユーザーフォームを作成します。
Excelシート
A列~D列にデータが入っています。
ユーザーフォームで、A列を検索します。
「Sheet1」にマクロボタンを設置します。
以下コードを標準モジュール「Module1」に入力して、
ボタンをクリックしたときに、ユーザーフォームが開くようにします。
Sub ボタン1_Click()
UserForm1.Show vbModeless
End Sub
マクロコードを「Module1」に入力した画面
マクロコードを入力
マクロコードを「UserForm1」に入力します。
Private Sub CommandButton1_Click()
'検索ボタンをクリックしたときの処理
Dim i As Long
Dim Mydata As Variant
Dim LastRow As Long
Dim Cnt As Long
'配列カウント初期化
Cnt = 1
'最終行を取得
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'2次元配列の要素数を変更
ReDim Mydata(1 To LastRow, 1 To 5)
'1行目~最終行までループ
For i = 1 To LastRow
'A列に該当データがあったら
If Cells(i, 1) = Me.TextBox1.Text Then
'配列にA~D列の値と、セル番号を格納
Mydata(Cnt, 1) = Cells(i, 1)
Mydata(Cnt, 2) = Cells(i, 2)
Mydata(Cnt, 3) = Cells(i, 3)
Mydata(Cnt, 4) = Cells(i, 4)
Mydata(Cnt, 5) = "A" & i
'配列カウント増加
Cnt = Cnt + 1
End If
Next i
'検索で一致したデータをリストボックスに表示
With ListBox1
.ColumnCount = 5
.ColumnWidths = "30;60;60;20;20"
.List = Mydata
End With
End Sub
Private Sub CommandButton2_Click()
'閉じるボタンをクリックしたときの処理
Unload UserForm1
End Sub
Private Sub ListBox1_Click()
'リストボックス内をクリックして該当セルを選択
Dim Myrow As String
Myrow = ListBox1.List(ListBox1.ListIndex, 4)
Range(Myrow).Select
End Sub
マクロコードを入力する場所「UserForm1」
動作
ユーザーフォームのテキストボックスに値を入力して、
「検索」ボタンをクリックします。
検索値が見つかった場合、
該当行の値とセル番号をリストボックスに表示します。
リストボックスを選択すると、
該当セルを選択状態にします。
ChatGPTでユーザーフォーム作成
AIでユーザーフォームを作ってみました!
ぜひご覧ください🥰
この記事がお役に立ちますと幸いです🍀
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
【VBAユーザーフォーム】何ができるの?:使用例34選
...
「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説
リンク