• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索結果の指定列をリストボックスに反映したい)

検索結果の指定列をリストボックスに反映したい

このQ&Aのポイント
  • ユーザーフォームにTextbox、検索ボタン、Listboxを配置し、Textboxに指定した大分類のレコードのA列とB列をListboxに反映させる方法について教えてください。
  • 検索ボタンを押すと、指定した大分類のレコードのA列とB列だけを抽出し、Listboxに表示する仕組みを作りたいです。
  • リストボックスに反映させる列の指定や検索ボタンの動作について教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.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 ぐらいで,逐一追加していくのが一番簡単かと思います。

mysame
質問者

お礼

keithinさん 教えて頂いたコードでやってみましたら、思う通り出来ました! 大変助かりました! どうもありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

http://okwave.jp/qa/q8423348.html オートフィルターをフォーム(VBA)で表現 そのデータにオートフィルターをかけます。 そして、TextBoxに入れたデータで絞り込み 1行しか表示されなかったら、「検索データはありません。」 2行以上表示された場合は、表示されているデータを 抽出し、リストボックス?に反映。 という方法が良いかと思います! やり方は少し忘れてしまったので、検索かけてみますね。 質問者さんも少しずつ考えてみてください。 データ絞り込みまでは出来るかと思いますよ^^

mysame
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excelで検索結果をテキストボックスに表示

    Excelユーザーフォームにテキストボックス4つとコマンドドボタン1つを作成して、TextBox1に検索項目を入力しボタンを押すとA列を検索してB列、C列、D列の検索結果をTextbox2(B列)、textbox3(C列)、textbox4(D列)に表示する。 A列に同じ項目があったら、ボタンを押すと次の検索結果をTextboxに表示するマクロを教えてください。

  • UserFormにテキストボックスを作成してその内容をExcleに反映

    初めまして。ExcelのVBAをチャレンジしています。 初心者なので良くわからないため質問させて頂きました。 今、商品登録用のユーザーフォームを作成しています。 ユーザーフォームには TextBox1=「商品No.」 TextBox2=「商品名」 TextBox3=「単価」 TextBox3=「仕入先」 CommandButton1=「登録」 CommandButton2=「終了」 があります。 「商品No.」,「商品名」,「単価」,「仕入先」を入力し、「登録」をクリックしたらExcelに横一列(参考1)に反映させ、入力・登録を繰り返し行い(商品が入ったら随時入力)下に追加していきたいのですが、どの様にすれば宜しいでしょうか? <参考1>   A    B   C   D 1 商品No. 商品名 単価 仕入先 2 001   ○○○ 10円 △△  3 ・     ・   ・  ・ 4 ・     ・   ・  ・ 5 ・     ・   ・  ・

  • ExcelVBAで行と列の検索

       A  B  C  D  E 1  コード あ  い  う  え 2  10  ○    ○ 3  20     ○  ○ 4  30          ○ 上記の表が5000件あります。Textbox1に入力し検索ボタンを押すと A列のコードを検索して一致する列の○のあるところの1行目の項目 をtextbox2に表示したいのですがうまく行きません。 よろしくお願い致します。 Private Sub CommandButton1_Click() '検索フォームボタン Dim i As Long Dim 最終行 As String Dim サーチ行 As Long Sheets(1).Activate 最終行 = Range("A1").End(xlDown).Row サーチ行 = 0 For i = 2 To 最終行 If TextBox1.Value = Range("A" & i) Then If Range("B" & i, "N" & i) = "" Then TextBox2.Text = Range("B1", "N1") サーチ行 = i Exit For End If End If Next If サーチ行 = 0 Then MsgBox TextBox1.Value & "データはありません。", vbInformation, "無し" End If TextBox1.SetFocus End Sub エラーはでません。データはありませんとなります。  

  • EXCEL2003 VBA リストボックス

    お世話になります。 質問の内容についてですが、 現在VBAの勉強をしながらデータベースを組んでいます。 そこで、次のようなものを作っています。 Sheet1に於いて、     A    B     C 1  追番  名称   個数 2   1   りんご   1個 3   2   みかん  2個 4   3   なし    3個 5   4   なす    5個 というような表があるとします。 そして、VBAでフォームをつくり、TextBox1(名称入力用)、TextBox2(個数入力用)、ListBox1(すでに入力されているもの及び追加分のリスト用)、CommandButton1(入力された「名称」と「個数」をSheet1の表の一番下に追加)、CommandButton2(フォームを閉じる)という構成にしています。 また、Sheet1上にコマンドボタンを作っており、そのボタンを押すとフォームを呼出すようにしています。 流れとしては、既存の表に追加する場合、コマンドボタンを押してフォームを呼出し、テキストボックスに入力した内容をSheet1の一番下に追加する。また、フォーム上のリストボックスでも現在の表の内容を見る事ができる、というものです。 フォームでのコードは以下のようにしています。 Private Sub CommandButton1_Click() If TextBox1.Value = "" Then MsgBox "「名称」は必須項目です。" End If If TextBox2.Value = "" Then MsgBox "「個数」は必須項目です。" End If If TextBox2.Value = "0" Then MsgBox "「個数」に0は登録できません。" End If Lrow = Range("B2").CurrentRegion.Rows.Count Range("B" & Lrow + 1).Value = TextBox1.Value Range("C" & Lrow + 1).Value = TextBox2.Value End Sub Private Sub CommandButton2_Click() Unload UserForm1 End Sub Private Sub UserForm_Initialize() Dim b As Long Dim a() As String ReDim a(1 To 100) UserForm1.ListBox1.ColumnCount = 2 UserForm1.ListBox1.List = Worksheets(Sheet1).Range("B2:C").Value For i = 2 To 104 If Range("B" & i) = "" Then ListBox1.AddItem Range("B" & i).Value ListBox1.AddItem Range("c" & i).Value b = b + 1 a(b) = Range("C" & i).Value End If Next i End Sub このコードでSheet1上のコマンドボタンを押して実行しようとするとエラーが出てしまいます。 エラーの原因は何なのでしょうか? (なお、コマンドボタンのコードは「UserForm1.Show」のみです。 コード自体は本などを読みながら似たようなVBAを使った物を参考にしています。

  • ファイル(A)を読み込んで文字列を変数に代入、変数で別ファイル(B)を検索・・・

    お世話になっております。 まず、仕様から書かせて頂きたいと思います。 【ファイルA】 商品名 数量 ------------- AAA, 3 BBB, 5 CCC, 6 AAA,5 . . . 【ファイルB】 AAA,11111 BBB,12345 CCC,99999 . . . 【ファイルC】 商品コード 数量 ------------------ 11111 8 12345 5 99999 6 (1)ファイルAを読込み、アルファベット文字列を変数に代入 (2)変数でファイルBを検索 (ファイルAの最後まで検索) (3)検索してみつかったら 数字文字列(商品コードとします)に変換 (4)商品コードと、数量の合計をファイルCに出力 fgets、strcmpなどを使って試してみたのですが、 うまく行かず、教えていただけますでしょうか?

  • VBA 検索ボックスの作成について

    VBA初心者です。 エクセルで、ある列(仮にA列)のみに限定し、ショートカットキーを押した時に、 別シートにあるデータベースから検索、 検索結果をショートカットキーを押したセルに反映させるマクロを組みたいと思っています。 具体的には、 シート1→(請求明細用シート) A列→コード B列→企業名 C列→部署名 D列→請求内容 E列→金額 etc シート2→データベース(全コード一覧) A列→コード B列→企業名 C列→部署名、のみが記載。 検索ボックスは、 ユーザーフォームにテキストボックスひとつ、ボタン1つ、リストボックス1つ。 テキストボックスに文字を入力し、ボタン(検索用)を押すと、 リストボックスにシート2上のAーC列の結果が表示され(検索条件:部分一致)、 検索結果をリストボックス上でダブルクリックすると、 ショートカットキーを押したA列のセル(及びB-C列)に検索結果を出力することができる、 といったプログラムを考えています。 (B-C列への出力はVLOOKUPだけで大丈夫なので、マクロ上で組む必要はないです。 また、テキストボックスで検索する時は、基本的にB列(会社名)の内容で検索する予定です。 そして同じ会社でも部署が違えば、別のコードを採用している為、 検索結果が複数ある場合があります。 注文が多くて申し訳ありませんが、よろしくお願いします。

  • Excelのリストボックスで(VBA・ユーザーフォーム)

    ユーザーフォームにあるリストボックスに、2列のデータを表示しています このデータを選択すると、シートのセルに転記するようにしたいのですが、うまく行きません 今のコードはこのようになっています Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Sheets(1).Range("A1").Value = ListBox1.Value End Sub このコードで1列目のデータがA1に入るのですが、B1に2列目のデータを入れたいのですが出来ません 例えば、リストボックスが下のような場合 コード 商品名 00001 お茶 00002 紅茶 00003 コーヒー 紅茶の行を選択したら、A1に00002、B1に紅茶と入力されるようにしたいのです どのようにすればよいのか教えて下さい よろしくお願い致します

  • リストボックスからリストボックスへ(複数列)

    データ読み込み済みのリストボックス1(4列)から空白のリストボックス(4列)へ、コマンドボタンをクリックしたらデータが追加されるコードを作成しました。 Private Sub CommandButton1_Click() Dim i As Long For i = 0 To 8 With ListBox1 ListBox2.AddItem .List(.ListIndex, i) End With Next i データは追加されましたが、縦方向にデータが追加され、 横方向に追加されませんでした。 どうすれば複数列のデータをそのまま複数列のリストボックスに追加できるでしょうか。 よろしくお願いします。 End Sub

  • エクセルVBA:文字列での検索

    エクセルVBAで、在庫管理をしようとしています。初心者です。 4個のListboxをそれぞれ選んでいくと、任意の商品名になるようにしています。 そこで、選んでもらった後、 Listbox1.List(Listbox1.ListIndex) & Listbox2.List(・・・・ というように4個のListboxから選ばれた文字列をつなぎ、別シートの在庫データベースの「商品名」と「Listboxをつなぎ合わせた文字列」と同じのを探させて、在庫を引き落とすようにしています。 ですが、できる場合とできない場合があります。 何ででしょう? 文字列で突き合わせると、見た目が同じ場合でも違うと認識されることがあるのでしょうか?(半角全角が違うとか、最後にスペースが入っているとかはないです。試しにセルに貼り付けてvlookupで検索してみると、できました。)

  • Excelでの数式について(検索結果の複数表示)

    販売記録としての簡単な表です。 A列には日付、B列には取引先コード、C列には商品コード、D列には商品名が入力してあります。 日付ごとに、取引先・商品名を入力するので、一つの列の中にはもちろん重複するデータがあります。 そこで、やりたい事はというと、 たとえば、セルE1に取引先コードを一つ入力すると、F列に、B列の中から同じコードをすべて探して、その行のD列にある商品名を表示させたいということです。 10件あったら10件とも(たとえ同じものでも)表示させたいのですが、どうしたらいいのでしょう? とりあえず、『=VLOOKUP(E1,B2:D30,3,TRUE)』といった感じににやってはみたのですが、これでは一つしか表示しないのです。 これをExcelで作りたいのですが、どなたか良い解決方法を教えてください。 お願いします。

このQ&Aのポイント
  • MFC-J939DNで受信ができない問題が発生しています。設定を確認し解決方法を探しています。
  • お使いの環境はひかり回線です。問題が発生している理由を探り解決を目指します。
  • この質問はブラザー製品に関するものです。
回答を見る

専門家に質問してみよう