• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAでコンボボックスで選択)

Excel VBAでコンボボックスを選択する方法

このQ&Aのポイント
  • Excel VBAのコンボボックスを使用して、選択肢を表示させる方法について教えてください。
  • コンボボックスを使って、複数の選択肢から一つを選ぶ方法について質問です。
  • Excel VBAのコードについての質問です。コンボボックスの選択肢を制御したいと思っていますが、うまくいきません。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

まず、ComboBox2の初期値が何も設定されてない場合、 If ComboBox2 = "A" Then は成立せず、次の ElseIf ComboBox2 = "B" Then も成立しないので、その次の Else: ComboBox2 = "C" に処理が来ます。しかし、ここでは ElseIfとなってないので、無条件にComboBox2の値が"C"になり、その後の処理で"c-1"と"c-2"が追加されてしまいます。 そして、このプロシージャは userform_initialize() という名前がついてますが、もしこの処理が初期化の処理のときだけ実行されるのであれば、その後ComboBox2で別の値を選択しても、それはComboBox3に反映されません。 ComboBox2の値からComboBox3のリストを設定するプロシージャを別に作り、初期化の処理と、ComboBox2のChangeイベントでそれを呼べばいいのではないでしょうか。 Private Sub SetComboBox3()  With ComboBox3   .Clear   .Font.Size = 12   If ComboBox2 = "A" Then    .AddItem "a-1"    .AddItem "a-2"   ElseIf ComboBox2 = "B" Then    .AddItem "b-1"    .AddItem "b-2"   ElseIf ComboBox2 = "C" Then    .AddItem "c-1"    .AddItem "c-2"   End If  End With End Sub としておいて、 Private Sub userform_initialize()  With ComboBox2   .Font.Size = 12   .AddItem "A"   .AddItem "B"   .AddItem "C"  End With  SetComboBox3 End Sub Private Sub ComboBox2_Change()  SetComboBox3 End Sub とすればいかがでしょうか。

cocoku
質問者

お礼

ありがとうございました。<(_ _)> できました。 Setcomboboxですね。ありがとうございました。 初心者ですみませんでした。

関連するQ&A

専門家に質問してみよう