- ベストアンサー
VBAで2つのリストボックスの連動表示に関して
- VBAを使用して2つのリストボックスを連動表示する方法について教えてください。
- Sheet1のB列とC列をListBox1に表示し、ListBox1で選択した取引会社に連動してSheet2のC列の顧客をListBox2に表示したいです。
- 具体的には、ListBox1で選択した取引会社の顧客をListBox2に表示したいです。例えば、ListBox1でA社を選択した場合、ListBox2にはA社の顧客1、顧客3、顧客5が表示されるようにしたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- 再度、2つのリストボックスの連動表示に関して
先日、VBAで2つのリストボックスの連動表示に関して(投稿日時 - 2013-08-31) ご質問させて頂き、mitarashi さんにご回答、ベストアンサーをしたのですけれども、 お恥ずかしい事ですが自分でUserFormへの載せ替えを試行錯誤して やってみたのですがVBA初心者の私じゃ中々、旨く行かないもので 再度、質問させていただきました。 VBAでUserForm上の記述をご享受お願い致します。 mitarashi さんに再度、ご回答して頂きたいのですが 無理のようでしたら mitarashi さん以外のVBAに精通しておられる方もご回答お待ちしております。 【前回の質問】 (例 リスト表) Sheet1(取引名簿) (No.) (取引番号) (取引社名) A列 B列 C列 ・・・ 1 1 A-0001 A社 ・・・ 2 2 B-0001 B社 ・・・ 3 3 A-0002 C社 ・・・ 4 4 A-0003 D社 ・・・ 5 5 B-0002 E社 ・・・ ・ ・ ・ Sheet2(顧客名簿) (No.) (取引社名) (顧客名) A列 B列 C列 ・・・ 1 1 A社 顧客1 ・・・ 2 2 B社 顧客2 ・・・ 3 3 A社 顧客3 ・・・ 4 4 C社 顧客4 ・・・ 5 5 A社 顧客5 ・・・ ・ ・ ・ 上記、例題 2つのシートリストを条件に合わせ、2つ目のリストボックスに 連動表示させたいのですが処理できるように教えて頂けないでしょうか。 ※ ListBox1 に Sheet1 の B列(取引番号) と C列(取引社名) を表示し、 ListBox2 には、 Sheet1 で選択した取引会社に連動し、 C列の顧客(条件一致者)全員を ListBox2に表示したいのです。 (例) ListBox1でSheet1の中からA社を選択したとします。 連動でListBox2には、A社の顧客1、顧客3、顧客5が表示するように出来ないでしょうか。 説明下手で申し訳ありませんが宜しくお願い致します。
- ベストアンサー
- Visual Basic
- VBAのリストボックス連動がうまく表示されません。
例えば、エクセル表に下記のようなデータが入っているとします。 A列は項目であり、B列は項目内容数(D列以降の項目数)、D列にはA列項目の内容が入っています。しかし、この列は変動する為、変数で指定しています。 これをリストボックス1で、まずA列の内容を表示させて、その中で選んだ項目をリストボックス2でD列以降の行内容を表示させ、リストボックス2の値を取得したいのですが、リストボックス2がうまくい表示できません。 リストボックス1では .RowSourceを使ってセル指定して表示させています。 このようなケースがuserformに多数あり、for~の処理はできるだけ避けています。 例えばUserForm_Initialize()で次の通りです。 With ListBox1 .ColumnCount = 1 .BoundColumn = 1 .RowSource = Worksheets(wksheet).Range(Cells(2, item_No), Cells(item_max_cnt, item_No)).Address(External:=True) VBA初心者で恥ずかしい質問ですが、どなたかご教示宜しくお願い致します。m(_ _)m A列_B列__D列_E列_F列_G列_H列 … a_3__あ_い_う b_1__か c_5__さ_し_す_せ_そ
- 締切済み
- Visual Basic
- リストボックスの列見出し(ExcelのVBA)
ExcelのVBAでのリストボックスコントロールについての質問です。 リストボックスの列見出しを作りたいのですが、なかなか上手く行きません。リストボックスに項目を設定するのはExcelのシートから… ----- WorkSheets("Sheet1").ListBox1.ListFillRange = "A1:B2" ↑(Sheet1のA1:B2のデータをListBox1に追加する場合)↑ ----- のようにするのではなく… ----- Dim MyList(1,1) ~~~(MyList配列にデータを代入) Userform1.ListBox1.Column = Mylist() ----- というように、コードから項目を追加しています。 そこで、列見出しを追加したいと思ったのですが… ----- ListBox1.ColumnHeads = True ----- と記述しても、列見出しは真っ白で、その下に項目が表示されるだけです。 列見出し専用の配列を用意しなければならないというような事はあるのでしょうか? もしあれば、どのように定義すればよいのでしょうか。 ちなみに、用いているExcelの環境は『Microsoft Excel 2004 for Mac (11.5.6)』、VBAの環境は『Microsoft Visual Basic (11.5)』です。 我流で覚えてきたような知識ですので、とても常識的な事を聞いているかもしれないですが、回答宜しくお願いします。
- ベストアンサー
- Visual Basic
- オプションボタンとリストボックスの連動
下記コードを作りましたが、全く反応がありません。 どこが悪いのか、指摘いただけませんでしょうか? よろしくお願いします。 ・オプションボタン1を選択=リストシートのB列をリストボックスへ表示 ・オプションボタン2を選択=リストシートのC列をリストボックスへ表示 ・リストボックスから一項目を選択、値を入力シートへ入力 Private Sub UserForm2_Initialize() If OptionButton1.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!B3:B" & lastRow End With End If If OptionButton2.Value = True Then With UserForm2 .ListBox1.RowSource = "リスト!C3:C" & lastRow End With End If End Sub Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _ ByVal X As Single, ByVal Y As Single) Worksheets("入力!").ActiveCell.Value = ListBox1.Value End Sub 以上
- ベストアンサー
- Visual Basic
- リストボックスにシートの値を表示させたいのですが
vbaでシートのリストボックスにシートの値を表示させたいのですが シートモジュールでこのコードを実行しようとしてもエラーになり出来ないのですが どこが間違ってますか? Sub リストボックスに値を表示する() Me.ListBox1.RowSource = Range("c1:c10").Value End Sub Me.ListBox1.Value = Range("c1:c10").Value もエラーになりました。
- ベストアンサー
- Excel(エクセル)
- 複数リストボックスの連動について
複数リストボックスの連動についてお聞きします。 エクセル2003、VBAのユーザーフォームのリストボックスになります。 VBAに関わらずプログラミング全般初心者で恐縮ですが よろしくご指導ください。 毎月の明細から 地域を分類軸に、そこに含まれる支店を、地域をまたいで複数選択ができるリストボックスの作成をしたいと考えてます。 ListBox1(地域),ListBox2(支店)に値を重複無しに、組み合わせを表示させるまではできたのですが、 ListBox1(地域)の選択を解除した後に、再び選択すると、 ListBox2(支店)の値が重複して表示されてしまいます。 ネットで知恵を探したのですが、 ListBox1のクリックイベント時に、ListBox2の値を消す しか見つからず、自分の課題がどうしても解決できません。 どのような方向性で考えれば、解決できるのか教示いただきたいです。 自分としては、ListBox1の選択を解除したときに、 対応するListBox2が消えればと考えましたが・・・全くうまくいきません。 もし、自分の考えが的外れでしたら、正しい考え方をお教えいただきたいです。 考えが妥当であれば、どういう記述をすべきなのか、 教授願いたいです。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- リストボックスに複数シートのデーターを表示させる。
リストボックスに複数シートのデーターを表示させる。 下記の構文で複数表示はできたのですが、このListBox1のColumnCount7つ目に シートBのC列のデーターを表示させる方法をお教えください。 With ListBox1 .ColumnCount = 7 ↓ .ColumnWidths = "0;100;120;0;0;0;120" .RowSource = "シートA!B5:G" & Worksheets("シートA").Cells(Rows.Count, 5).End(xlUp).Row → .RowSource = "シートB!C5:C" & Worksheets("シートB").Cells(Rows.Count, 5).End(xlUp).Row .MultiSelect = fmMultiSelectMulti .ListStyle = fmListStyleOption End With よろしくお願いします
- ベストアンサー
- Visual Basic
- エクセルで新規顧客のリストを追加
前回、同じような質問して、分かったつもりだったのですが、できませんでしたので、もう一度質問させて頂きます。 シート1に、顧客(会社名)のリストがあります。 <シート1> (A列) A社 B社 C社 ・ ・ シート2に、その月に取引のあった顧客の名前(会社名、担当者が同じセル内にある)があります。 <シート2> (A列) (B列) B社 ○○さん 1000円 C社 △△さん 1000円 X社 □□さん 2000円 C社 ○△さん 1500円 G社 □△さん 1000円 B社 ◎○さん 500円 という具合です。 X社さん、G社さんは新しい顧客なので、シート1のリストに追加したいのです。 しかし、シート1のデータも膨大であり、シート2のデータも膨大なので、手作業では困難です。 そこで、シート1のリストにない顧客の名前だけ、シート2で目立つような(あるいはピックアップするような)方法がないでしょうか。 金額は関係ありません。次の列に入っていることを分かりやすくしただけです。
- ベストアンサー
- オフィス系ソフト
- フォームのリストボックスに値を表示させたい
VBA フォームのリストボックスに値を表示させたい A1→aaa A2→bbb リストボックスに上記の値を表示させたいなら、 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "Sheet1!A1:A2" End Sub で出来ますが、シート上のセルで表示する値を指定するのではなく、VBA上で、リストボックスに表示させる値を指定したいのです。 Private Sub UserForm_Initialize() UserForm1.ListBox1.RowSource = "aaa,bbb" End Sub を実行すると、VBA実行時エラー380になってしまいます。 UserForm1.ListBox1.RowSource = "aaa;bbb" もダメでした。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセル リストボックスの順番入替について
エクセル2010で取引先の会社の名簿を作成しています。A列に取引先会社番号(1~)、C列に会社名、D列以降に会社情報を表記しています。B列は取引会社に子会社があれば1、なければ0としています。例)1/0 A商事 1/1 B商事(A商事子会社) 2/0 C商事 3/0 D商事 3/1 E商事(D商事子会社)。 順番を入替時用にユーザーフォームのリストボックスに直近の取引会社(A、C、D社)を表示しコマンドボタンで順番を入れ替えてます。(A、C、D社→D、C、A社等) ここまでは過去の例等を参考にしてできました。 リストボックスの順番にシートを入れ替える時、子会社がある場合どうしたらいいのでしょうか。また、D、C、A社順にした場合、並び替えだけだと3/0D商事、3/1E商事、2/0C商事、1/0A商事、1/1B商事となりますが、B列の番号を1/0D社、1/1E社、2/0C社、3/0A社,、3/1B社と変えるには、どうしたらよいか教えてください。
- 締切済み
- Excel(エクセル)
お礼
mitarashi さん こんにちわ。 お礼、遅くなりまして申し訳ございません。 回答頂き、本当に有難う御座いました。 Sheet上のコントロールツールボックス(ListBox)で 試して見ました。 思っていた通りに完璧に出来ました。 今度は、自分でUserF0rmへの載せ替えを 試してみます。旨く行くか不安ですけど…。 UserF0rmへの載せ替えで注意事項及び追加提案がありましたらご享受下さい。 本当に助かりました、有難う御座いました。 また、機会がありましたら、よろしくお願いします。