プロが教えるわが家の防犯対策術!

VBA リストボックス複数選択からセルへの反映についての質問です。

リストボックス1では1つ選択
リストボックス2でも1つ選択
リストボックス3で4つ選択し
リストボックス3で選択した4つは表示できるが
リストボックス1と2も追従して4つ表示されるようにするにはどのようなコードを書けばよろしいのでしょうか?

質問者からの補足コメント

  • bonaron様その通りです。

    (1)
    リストボックス1:
    あ,い,う
    リストボックス2:
    カ,キ,ク
    リストボックス3:
    A,B,C,D,E,F,G

    の場合です。

    リストボックス1 から「あ」を選択
    リストボックス2 から「キ」を選択
    リストボックス3 から「A,C,D,F」を選択

    この場合

    シートに
    あ,キ,A
    あ,キ,C
    あ,キ,D
    あ,キ,F

    を表示させたいということでしょうか?
    →表示させたいです。
    (2)
    リストボックス3 から選択する数は 4に決まっている?
    3 や5 の場合もある?
    →3や5の場合もございます。

      補足日時:2023/02/26 16:06

A 回答 (6件)

こんにちは


放置されているようですので・・・回答します
サンプルコード、コードでのアドバイスが必要な場合 下記が必要です
(スキルが解らないので色々書きます)

リストボックス・・・ListBox。。VBAで対象とする所謂リストボックスは
ユーザーフォーム上のListBox・シート上のListBox それとシート上のリストボックス、リボンのListBox(カスタム)などがあります
上記オブジェクトへのアクセス、処理の書き方は同じではありません

ご質問者様の言われるリストボックスとは何を指しますか?

>表示されるようにするには
何処に表示されれば良いのでしょう?
VBAで表示と言うとユーザーフォーム上の表示可能なコントロールへの出力
Msgbox・イミディエイトウィンドウ・シートのRangeオブジェクトへの出力などになります
何処に表示するのでしょう?

なさりたい事、問題点の他に自身で行っている作成中コードやユーザーフォームやシートの状況が分かる説明もしくは画像などが必要?(1つだけでも良いと思います)

やりたい事の説明だけですと作成依頼として判断され規約違反になる恐れがあります(回答もつきにくいです)

回答者(プログラミング系)は論調、言い回しは色々ですが
自身の知識を惜しみなく善意で回答されている方ばかりです
これはコミュニケーション、マナーの問題ですが 回答者へのお礼の返信もした方が良いです(無視されるのは嫌ですからね)

これはご質問者様のプロフィールを見ると解ってしまいます
質問回数・お礼回数・解決回数・削除回数・・
私は回答前に必ず確認しています。ととた様が回答者側でしたらどう思われますか?

リストボックスの詳細 出力先など提示いただければ、回答されると思います
    • good
    • 0

No.4です。



ちなみに補足で上がっている内容は最初の質問で理解可能ではありましたが、利用規約違反にならないようコード提示をお願いしました。
そうしないとどのListBoxなのかわかりませんでしたし。
    • good
    • 0

ListBox3の複数選択に応じて行数が決まるけど、その際に飛び飛びな選択などすると1と2の値をどうセル(行番号)に入れれば良いかが、不確定なのでは?



その際ListBox3のListCountを基にしたループ変数で決めるのではなく、行番号(開始番号)用に別の変数をループ前に設定しておき、ループ中で選択されてたらセル3列に書き込んだ後、行番号用変数を+1していけば良いかと思います。

ただ現在どうなっているのかが不明なのでそうなると【利用規約違反】になる可能性がある為、コードの提示を促したのですけど?
    • good
    • 0

質問内容が曖昧なので確認させてください。



(1)
リストボックス1:
あ,い,う
リストボックス2:
カ,キ,ク
リストボックス3:
A,B,C,D,E,F,G

の場合です。

リストボックス1 から「あ」を選択
リストボックス2 から「キ」を選択
リストボックス3 から「A,C,D,F」を選択

この場合

シートに
あ,キ,A
あ,キ,C
あ,キ,D
あ,キ,F

を表示させたいということでしょうか?

(2)
リストボックス3 から選択する数は 4に決まっている?
3 や5 の場合もある?
    • good
    • 1

どのようなコードでお悩みなのか、そのコードを提示されると良いかもです。

    • good
    • 0

Dim selectedValues As Variant


Dim i As Long

selectedValues = ListBox3.Value

For i = 0 To ListBox3.ListCount - 1
If ListBox3.Selected(i) Then
'ListBox3で選択された項目の値をListBox1と2にも反映する
ListBox1.AddItem ListBox3.List(i)
ListBox2.AddItem ListBox3.List(i)
End If
Next i

このコードでは、ListBox3.Value でListBox3で選択された値を取得し、 ListBox3.ListCount でListBox3の項目数を取得します。For ループを使用して、ListBox3の各項目について、ListBox3.Selected(i) が True であればListBox1とListBox2に項目を追加します。

つまり、ListBox3で複数選択された項目について、ListBox1とListBox2にそれぞれ項目を追加することで、ListBox1とListBox2もListBox3と同じように4つの項目が表示されるようになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A