- 締切済み
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__さ_し_す_せ_そ
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
UserForm_Initialize()で”名前の定義”を用いて リストの切り替え(入力規則) http://www4.synapse.ne.jp/yone/excel2010/excel2010_nyukisoku3.html にあるような連動方法を取ることは可能かもしれませんが、 >このようなケースがuserformに多数あり、 多数とはどう言うことなのか? >for~の処理はできるだけ避けています。 避けなければならない理由は? の回答によってはこの方法も無理かもしれませんね。 ⇒と、先日気にはなっていたのですが どこなのか見失ってしまったもので。
補足
n-junさんへ 早々の回答ありがとうございます。 質問が言葉足らずですみませんでした。 多数というのは言葉の通りで、数十個 リストボックスの連動が2個の場合や3個の場合等が複数存在するという事です。私としましては、2個の連動がうまくいけば、それを元に3個のものも対応できると思いましたので、多数とだけ記載しました。 For~を処理を避けたかった理由としましては、上記で記載した複数のリストボックス連動とかなり大きなデータ量を処理するのに、For~処理を使うと遅くなるとどこかに記載があったので、避けられるものならと思いました。 しかし、やはり繰り返す方法しか見つからずforなりdoを使う事により解決いたしました。 ありがとうございました。m(_ _)m