• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:連携する複数のコンボボックスに同じリストを設定)

コンボボックスの連携設定に関する質問

このQ&Aのポイント
  • 12個のコンボボックスに同じリストを設定し、選択した値に応じて別のコンボボックスのリストを表示したい。しかし、設定したコードが動かないため、どこが間違っているのか教えてほしい。
  • 12個のコンボボックスに同じリストを設定し、選択した値に応じて別のコンボボックスのリストを表示したい。現在は、UserForm_Initializeイベントで設定しようとしているが、正しく動作しない。
  • 12個のコンボボックスに同じリストを設定し、選択した値に応じて別のコンボボックスのリストを表示したい。設定したコードを見直しても、原因が分からないため、エキスパートの助言が必要。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>のようですのでやはり各ComboBoxのイベントに書き込むしか >ないのでしょうか。 クラスモジュールを使って行う方法がありますが、今からクラスモジュールを学ぶより >12パターン×6コンボで72個もコードを書く必要があり、 で行うほうが早く解決して、理解できるのでは

dori46
質問者

お礼

ご回答頂きありがとうございます クラスモジュールですか まだまだ奥深い世界ですね 仰るとおり今回は悩んでるうちにさっさと書いた方が良さそうです Me.の件もColumnCountの件も丁寧にお教え頂き有難うございました

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

貴方のコードを見る限りでは ComboBox1、3、5、7、9、11 の6個のコンボボックスのリスト内容は同じ思われますので Initializeイベントでは、上記の6個のボックスのリストを設定しましょう Private Sub UserForm_Initialize()   Dim i As Variant   For i = 1 To 11 Step 2     Me.Controls("ComboBox" & i).List = ・・・・・・   Next End Sub >ComboBox1で選択した値に応じてComboBox2のリストが選ばれる これはComboBoxの値が変わったというイベントで行います。 まず、ComboBox1の値が変わると Private Sub ComboBox1_Change()   With Me.Controls("ComboBox1")     If .Value = "車いす" Then       Me.Controls("ComboBox2").List = Worksheets("商品マスタ").Range("車いすテーブル").Value     ElseIf .Value = "車いす付属品" Then       Me.Controls("ComboBox2").List = Worksheets("商品マスタ").Range("車いす付属品テーブル").Value     ElseIf .Value = "特殊寝台" Then       Me.Controls("ComboBox2").List = Worksheets("商品マスタ").Range("特殊寝台テーブル").Value     End If   End With End Sub 次に、ComboBox3の値が変わると Private Sub ComboBox3_Change()   With Me.Controls("ComboBox3")     If .Value = "車いす" Then       Me.Controls("ComboBox4").List = Worksheets("商品マスタ").Range("車いすテーブル").Value     ElseIf .Value = "車いす付属品" Then       Me.Controls("ComboBox4").List = Worksheets("商品マスタ").Range("車いす付属品テーブル").Value     ElseIf .Value = "特殊寝台" Then       Me.Controls("ComboBox4").List = Worksheets("商品マスタ").Range("特殊寝台テーブル").Value     End If   End With End Sub ComboBox5、7、9、11 のChangeイベントも同じように書いてください > UserForm4.Controls("ComboBox" & i). 本、UserForm上にあるComboBoxなら   Me.Controls("ComboBox" & i) と書くことが出来ます。 >.ColumnCount = 5 ColumnCount数が固定ならプロパティウインドゥで設定しておきましょう

dori46
質問者

補足

ご回答頂きありがとうございます 質問するのが初めてなのでとても感激しています 実は If~then ElseIf・・・EndIfで処理している条件が 12パターンもあるのです。 ComboBox_Change() イベントで処理しようとすると 12パターン×6コンボで72個もコードを書く必要があり、 コード全体がだらだらと長くなるので変数でのControls ("ComboBox" & i)処理で短縮したかったのです。 ご回答から推測するにイベントを発生させるタイミングが問題 のようですのでやはり各ComboBoxのイベントに書き込むしか ないのでしょうか。  

関連するQ&A