- ベストアンサー
検索結果の指定列をリストボックスに反映したい
- ユーザーフォームにTextbox、検索ボタン、Listboxを配置し、Textboxに指定した大分類のレコードのA列とB列をListboxに反映させる方法について教えてください。
- 検索ボタンを押すと、指定した大分類のレコードのA列とB列だけを抽出し、Listboxに表示する仕組みを作りたいです。
- リストボックスに反映させる列の指定や検索ボタンの動作について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
元データはSheet1にあるとして private sub CommandButton1_Click() dim r as long if me.textbox1 = "" then exit sub me.listbox1.clear me.listbox1.columncount = 2 with worksheets("Sheet1") for r = 2 To .range("E65536").end(xlUp).row if cstr(.cells(r, "E").value) = me.textbox1.value then me.listbox1.additem .cells(r, "A").value me.listbox1.list(me.listbox1.listcount - 1, 1) = .cells(r, "B").value end if next r end with end sub ぐらいで,逐一追加していくのが一番簡単かと思います。
その他の回答 (1)
- satoron666
- ベストアンサー率28% (171/600)
http://okwave.jp/qa/q8423348.html オートフィルターをフォーム(VBA)で表現 そのデータにオートフィルターをかけます。 そして、TextBoxに入れたデータで絞り込み 1行しか表示されなかったら、「検索データはありません。」 2行以上表示された場合は、表示されているデータを 抽出し、リストボックス?に反映。 という方法が良いかと思います! やり方は少し忘れてしまったので、検索かけてみますね。 質問者さんも少しずつ考えてみてください。 データ絞り込みまでは出来るかと思いますよ^^
お礼
satoron666さん、どうもありがとうございます! いろんなとこから検索をかけて、下記コードでやってみたところ、A列の商品コードとE列の大分類しかリストボックスに反映できなくて、どこがダメか分からなくて、困ってます。 Sub cmdIDSearch_Click() Dim daibunnrui As Range Dim c As String With Worksheets("商品CD").Columns(5) Set daibunnrui = .Find( _ what:=txtIDSearch.Value, _ LookIn:=xlValues, _ lookat:=xlPart, _ MatchByte:=False) If daibunnrui Is Nothing Then MsgBox "対象存在しません。", _ vbOKOnly + vbInformation, "検索" Else IDListBox.Clear c = daibunnrui.Address Do '検索にヒットしたセルの値を取得 With IDListBox .AddItem daibunnrui.Offset(, -4).Value .Column(1, .ListCount - 1) = daibunnrui.Value End With Set daibunnrui = .FindNext(daibunnrui) Loop Until daibunnrui.Address = c End If End With End Sub
お礼
keithinさん 教えて頂いたコードでやってみましたら、思う通り出来ました! 大変助かりました! どうもありがとうございました!