大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使って、絞り込み検索をする場合は、データベースから部分一致で値を抽出して、ForとIfを使って値を取得するとできます。ユーザーフォームの場合は、絞り込む条件を「テキストボックス」に入力して、抽出した値は「リストボックス」に入力するといいです。絞りこみ検索する方法について、マスターしていきましょう。

はじめに

この記事では、ユーザーフォームを使って絞り込み検索する方法について、ご紹介します。

絞り込み検索をする場合は、条件を部分一致で抽出して、ForとIfで値を検索するとできます。

ユーザーフォームを使う場合は、絞り込む値は「テキストボックス」を使って、抽出した値は「リストボックス」に入力するという感じになります。

絞りこみ検索ができれば、大量データから値を検索する際に、検索値を入力するのが簡単になりいます。

絞りこみ検索する方法について、マスターしていきましょう。

では、ユーザーフォームを使って、絞り込み検索する方法について、解説していきます。

この記事を読むメリット

  • ユーザーフォームを使って、条件を絞り込んで検索することができます。

本記事の内容を動画にて解説しております。

本記事の内容を動画にて解説しております。

VBAコードの作成手順について、動画で確認できます。

目次から見たい項目へ移動すると便利ですよ。

目次

ユーザーフォームで絞り込み検索したい

ユーザーフォームで絞り込み検索してみます。

やりたい内容

やりたい内容は、ユーザーフォームを使って絞り込み検索をしたい、ということになります。

ユーザーフォームを使って絞り込み検索したい

ユーザーフォームを使って、検索用シートに絞りこみ検索をします。

ユーザーフォームを使って、絞り込み検索をしたいです

こちらのデータから条件を絞って検索をします。

こちらのデータから条件を絞って検索をします

では、動作をみてみます。

ユーザーフォームを表示

ボタンをクリックして、ユーザーフォームを表示します。

ボタンをクリックして、ユーザーフォームを表示します

検索する値の条件を絞り込んでいきます。

条件を絞り込む

条件を入力して、Enterを押します。

条件を入力して、商品を絞り込みします

商品を絞り込むことができます。

商品を絞り込むことができます

抽出した値からデータベースを検索します。

抽出した値からデータベースを検索

商品を選択してEnterを押すと、データベースから値を検索できます。

商品を選択してEnterを押すと、データベースから値を検索できます

データベースにない値で絞り込みしてみます。

データベースにない値で絞り込みしてみます

抽出する値がない場合は、メッセージボックスを表示します。

抽出する値がない場合は、メッセージボックスを表示します

では、ユーザーフォームを使って、絞りこみ検索をするVBAコードを作成していきます。

VBAコードを作成

ポイントごとに、VBAコードを作成していきます。

検索用シートを作成

まずは、検索用シートを作成します。

検索用シートを作成

検索用シートを作成します

こちらの検索用シートに、条件を絞り込んで検索をします。

ユーザーフォームを作成

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

ユーザーフォームを作成

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

テキストボックスと、リストボックス、ラベルを設置しています。

テキストボックスから部分一致で抽出

テキストボックスから部分一致で抽出するVBAコードになります。

「検索」シートのシートモジュールに記載をします。

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  
  If KeyCode <> vbKeyReturn Then Exit Sub 'Enter以外は、処理を終了
  
  ListBox1.Clear 'リストボックスをクリア
  
  'データベースを検索
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    '部分一致で商品を検索
    If InStr(Sheets("DB").Cells(i, "A"), TextBox1.Text) > 0 Then
      ListBox1.AddItem Sheets("DB").Cells(i, "A") 'リストボックスに値を追加
    End If
  Next
  
  'リストボックスにデータがある場合
  If ListBox1.ListCount > 0 Then
    ListBox1.SetFocus 'リストボックスをフォーカス
    ListBox1.ListIndex = 0 '一番上を選択
  Else
    KeyCode = 0 'テキストボックスをフォーカスしたままにする
    MsgBox "データがありません"
  End If
  
End Sub

では、VBAコードを実行してみます。

条件を絞り込む

F5キーを押して、ユーザーフォームを表示します。

F5キーを押して、ユーザーフォームを表示します

絞り込む条件を入力して、Enterを押します。

絞り込む条件を入力して、Enterを押します

商品を抽出することができます。

商品を抽出することができます

商品を抽出することができました。

抽出する値がない場合は、メッセージを表示することができます。

抽出する値がない場合はメッセージを表示

データベースにない値を入力して、Enterを押してみます。

データベースにない値を入力して、Enterを押してみます

抽出する値がデータベースにない場合は、メッセージボックスを表示できます。

抽出する値がデータベースにない場合は、メッセージボックスを表示できます

こんな感じで、メッセージボックスを表示することができます。

リストボックスから値を検索

次は、リストボックスから値を検索するVBAコードになります。

「検索」シートのシートモジュールに記載します。

Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  
  If KeyCode <> vbKeyReturn Then Exit Sub 'Enter以外は、処理を終了
  
  'データベースを検索する
  For i = 2 To Sheets("DB").Cells(Rows.Count, "A").End(xlUp).Row
    'リストボックスで選択した値と同じ商品を検索
    If Sheets("DB").Cells(i, "A") = ListBox1.List(ListBox1.ListIndex) Then
      Sheets("検索").Range("B3") = Sheets("DB").Cells(i, "A") '商品
      Sheets("検索").Range("D3") = Sheets("DB").Cells(i, "B") '価格
      Sheets("検索").Range("B5") = Sheets("DB").Cells(i, "C") '残り数量
      Sheets("検索").Range("B6") = Sheets("DB").Cells(i, "D") '必要数量
      Sheets("検索").Range("A8") = Sheets("DB").Cells(i, "E") '備考
    End If
  Next
  
End Sub

では、VBAコードを実行してみます。

抽出した値で検索する

抽出した商品を選択して、Enterを押してみます。

商品を選択して、Enterを押してみます

抽出した値を使って、値を検索できます。

抽出した値を使って、値を検索できます

抽出した値を使って、値を検索できました。

こんな感じで、条件を絞りこんで検索できると便利です。

起動用ボタンを作成

最後に、ユーザーフォームの起動用ボタンを作成します。

登録するVBAコードは、次のようになります。

Sub TEST()
  
  'ユーザーフォームを開く
  UserForm1.Show
  
End Sub

ボタンを作成して、VBAコードを登録します。

ボタンを作成してVBAコードを登録

ボタンを作成して、VBAコードを登録します

ボタンをクリックして、ユーザーフォームを表示できます。

ボタンクリックでユーザーフォームを表示できる

ボタンをクリックして、ユーザーフォームを表示できます

ボタンをクリックして、ユーザーフォームを表示できました。

おわりに

この記事では、ユーザーフォームを使って絞り込み検索する方法について、ご紹介しました。

絞り込み検索をする場合は、条件を部分一致で抽出して、ForとIfで値を検索するとできます。

ユーザーフォームを使う場合は、絞り込む値は「テキストボックス」を使って、抽出した値は「リストボックス」に入力するという感じになります。

絞りこみ検索ができれば、大量データから値を検索する際に、検索値を入力するのが簡単になりいます。

絞りこみ検索する方法について、マスターしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す