コンボボックスで選択したいと思っていますがうまくいきません。
教えてください。
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"しかでません。よろしくお願いします。
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
とすればいかがでしょうか。
ありがとうございました。<(_ _)>
できました。
Setcomboboxですね。ありがとうございました。
初心者ですみませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) VBAユーザーフォームの複数のコンボボックスについて。 1 2022/04/25 08:13
- Visual Basic(VBA) リストポックスについて 2 2022/11/05 20:48
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) フォーム上のリストボックスに重複して表示しています 3 2022/10/19 11:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
EXCEL VBA マクロ 実行する度に...
-
メルカリのメルカードで買い物...
-
switch の範囲指定
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
Do~Loopした回数をカウントしたい
-
C言語 b += a ? 1 : 0; の意味
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
実時間処理ってなんですか?
-
インタラクティブの反対語は?
-
リョウ・・・量?料?
-
findは動くがfindnextがマクロ...
-
VBAでセルに値が入力されるまで...
-
VB.NET Excelを読み込んでDataT...
-
Select Case文でこのようなこと...
-
月度は何て読みますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報