アプリ版:「スタンプのみでお礼する」機能のリリースについて

コンボボックスで選択したいと思っていますがうまくいきません。
教えてください。
Private Sub userform_initialize()
 With ComboBox2
  .Font.Size = 12
  .AddItem "A"
  .AddItem "B"
  .AddItem "C"
 End With
If ComboBox2 = "A" Then
 With ComboBox3
  .Font.Size = 12
 .AddItem "a-1"
 .AddItem "a-2"
 End With
ElseIf ComboBox2 = "B" Then
With ComboBox3
  .Font.Size = 12
 .AddItem "b-1"
.AddItem "b-2"
End With
Else: ComboBox2 = "C"
With ComboBox3
.Font.Size = 12
.AddItem "c-1"
.AddItem "c-2"
End With
End If
End Sub
コンボボックス2で"A"を選んだら、コンボボックス3には"a-1とa-2"の選択したい
のですが、"c-1,c-2"しかでません。よろしくお願いします。

A 回答 (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

とすればいかがでしょうか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/01/06 21:57

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