ユーザーフォーム 検索結果をリストボックスに複数列表示VBA

VBA検索結果をリストボックスに複数列表示-アイキャッチ ExcelVBA

ユーザーフォームでシート内を検索して、一致したらリストボックスに表示にする方法をご紹介します。

さらにリストボックスをクリックすると、
該当セルを選択するように作ってみました。

ぜひお試しください!

ユーザーフォーム作成

ユーザーフォームを作成します。


 

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」


 

動作

ユーザーフォームのテキストボックスに値を入力して、
「検索」ボタンをクリックします。


 

検索値が見つかった場合、
該当行の値とセル番号をリストボックスに表示します。


 

リストボックスを選択すると、
該当セルを選択状態にします。


 
 
この記事がお役に立ちますと幸いです。
 
・【ExcelVBA】ユーザーフォーム作成の事例まとめ
 

【VBAユーザーフォーム】何ができるの?:使用例29選
...

 

「たった1秒で仕事が片づくExcel自動化の教科書【増強完全版】」
「5時間かかる作業が3時間でできます」ではなく「1秒で終わらせます」へ
毎日の業務を瞬時に終わらせるしくみを解説