• ベストアンサー

エクセルVBA UserFormで選択リスト

VBAは多少はかじりましたが、UserFormを使うのは初めてです。これまではDialogSheetでやってました。 しかし今回は、DialogSheetでは大分類小分類に分けたリストはできそうもないのでUserFormならマルチページ機能があるのでなんとかなるのではと思いました。 やりたいことは約千種類あるデータを、まず大分類のカテゴリーに10区分し、マルチページとします。 大分類の各ページをさらにマルチページで小区分し、各5区分とします。都合10*5で50ページとなります。 小区分の各ページにそれぞれリストボックスを配置し、エクセルシートのデータリストからデータを表示し、エクセル使用者が選択できるようにします。 こんなことはマルチページで可能でしょうか?それともタブストリップですか? 参考となるコードなどもご教示いただけると幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • komet163
  • ベストアンサー率51% (22/43)
回答No.1

Web上のFAQの様なデザインにしてはどうでしょう? 大分類コンポポックス(10リスト) 中分類コンポポックス(5リスト) 小分類コンボボックス(データリスト参照数) 表示コマンドボタン の4つを用意して、それぞれのコンポポックスは 上位コンボボックスの Change イベントでリスト内容を 更新するようにしては? マルチページとタブストリップは、 ラベル名の更新とか、アクティブページの所得とか その他イベント管理が大変ですよ。 またラベル名が長すぎると見栄えが悪くなりますし。

merlionXX
質問者

お礼

ありがとうございました。 マルチページとタブストリップは、おすすめじゃないですか。 やはり、ユーザーフォームを作ったこともないのに身の程をしらない質問をしてしまったようです。 コンボボックスを3つならDialogSheetでもなんとか出来ますしね。

その他の回答 (1)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

>...都合10*5で50ページとなります。 マルチページでもタブストリップでも50ページもあったらユーザーが大変ですし、制御も大変です。 フォームに ・大分類用コンボボックス ・小分類用コンボボックス ・結果表示用リストボックス を配置し、各コンボボックスはChangeイベントで連動させ、絞込み検索させる仕組みの方が良いと思います。 ACCESS版でしたら、「絞込み コンボボックス」でWEB検索すると手法が数多くヒットします。ACCESSではSQLでレコードソースを切り替えてコンボボックスにセットしますが、考え方はEXCELで実装する際も同じですから、参考にしてみてはどうでしょうか? EXCELなら、 1. 大分類の重複なしリストを大分類用コンボボックスに ADD ITEM 2. 大分類選択のChangeイベントで、オートフィルター+可視セルからデータを取得し、同じく重複なしのデータを小文類にADD ITEM 3. 小分類選択のChangeイベントで、オートフィルター+可視セルからデータを取得し、リストボックスに ADD ITEM こんな感じの流れでしょうか。 >やりたいことは約千種類あるデータを... データがイメージできませんので、抽象的なアドバイスになってしまいますが。 ちなみに、重複の無いリスト作成にはDictionaryオブジェクトを利用すると簡単です。

merlionXX
質問者

お礼

ありがとうございました。 勉強します。

関連するQ&A