• ベストアンサー

VBA コンボボックス

VBAコンボボックスで AAAを選択→処理A BBBを選択→処理B CCCを選択→処理C としている場合、 AAAを選択→処理Aの後、コンボボックスで再度AAAをクリックしても次の処理Aにいきません。いったんBBBをクリックしてしてAAAをクリックすると処理Aに行きますが、連続AAAをクリックして処理Aはできないでしょうか。 何か方法はありませんか? Private Sub ComboBox1_Change() If ComboBox1.Value = "AAA" Then   ’処理Aへ ElseIf ComboBox1.Value = "BBB" Then   ’処理Bへ Else   ’処理Cへ End If End Sub

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

回答No.2の追加です。 もしかしてボックスをクリックじゃなくて再度ドロップボタンでリストから同じものを選択したら反応がないということでしたら Private Sub ComboBox1_Change() はそのままで 以下だけを追加してください。 Private Sub ComboBox1_DropButtonClick() ComboBox1.Value = "" End Sub なお、元のPrivate Sub ComboBox1_Change() Else   ’処理Cへ は ElseIf ComboBox1.Value = "CCC" Then '処理Cへ に変更してください。どれを利用しても上記(CCCの場合も指定しておく)に変更しておいた方がいいと思います。

kuroneko733
質問者

お礼

ご回答いただきありがとうございます。 思っていた通りの動作になりました! ご丁寧なご指導ありがとうございました。

Powered by GRATICA

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

回答No.2の記載忘れです。 元の Private Sub ComboBox1_Change() は必要なのでそのままにしておいてください。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.2

クリックした時でしたら以下の方法でできると思います。 Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) Debug.Print "X= "; X End Sub で一度実行してコンボボックスのボックス内の右のほうをクリックするとイミディエイトウィンドウにXの値が出るのでそれを基にして 80くらいでボックス内の右端よりちょっと左寄りくらいの感じだと Private Sub ComboBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If X < 80 Then Select Case ComboBox1.Value Case "AAA" MsgBox "'処理Aへ" Case "BBB" MsgBox "'処理Bへ" Case "CCC" MsgBox "'処理Cへ" Case Else End Select End If End Sub ただ単にクリックだとミスでクリックしても動作してしまいますからダブルクリックの方がいいかもしれませんね。 Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Select Case ComboBox1.Value Case "AAA" MsgBox "'処理Aへ" Case "BBB" MsgBox "'処理Bへ" Case "CCC" MsgBox "'処理Cへ" Case Else End Select End Sub もっと安全でしたらコマンドボタンをクリックしたら実行するようにしてもいいかもです。

  • f272
  • ベストアンサー率46% (8005/17110)
回答No.1

ComboBox1_ChangeではなくてComboBox1_Clickを使うとか,ComboBox1_DblClickを使うとかでいかがでしょう。

kuroneko733
質問者

お礼

ご回答ありがとうございます。 ComboBox1_ClickやComboBox1_DblClickに書き換えてみましたが、 できないようです。

関連するQ&A

  • Excel VBAでコンボボックスで選択

    コンボボックスで選択したいと思っていますがうまくいきません。 教えてください。 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"しかでません。よろしくお願いします。

  • VBA コンボボックスの条件分岐

    コンボボックスの条件分岐のコードが間違っているみたいで 調べても分からなかったので質問します。 やりたいこと 『マスタ』という名前のシート内のセルを参照し マスタシートには C2セル『A』C3セル『B』C4セル『C』と それぞれアルファベットがあります。 そこでコンボボックスを使用し コンボボックス22にC2~C4セルを選択できるようにし 例えばC2セルを選択したら コンボボックス21の参照範囲をマスタシート内の D2~D13セルを選択できるようにし C3セルを選択したら コンボボックス21の参照範囲をマスタシート内の E2~E13セルを選択できるようにしたいのです。 すいませんがコードを記載して頂けますと 助かります。 Private Sub UserForm_Activate() '----------------------- With ComboBox22 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!C2:C4" End With '↑こうすればコンボボックス22のマスタシートのC2からC4まで値を選択できるようになります。 '------------------------わかりやすく区切っています。 '--------------------------------------- If UserForm1.ComboBox22 = "A" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!D2:D13" End With End If '↑コンボボックス22の値が(C2セルの値がAなら)コンボボックス21をマスタシートのD2からD13までを選択できるようにしたい If UserForm1.ComboBox22 = "B" Then With ComboBox21 .ColumnCount = 2 .ColumnWidths = "90;10" .RowSource = "マスタ!E2:E13" End With End If '↑コンボボックス22の値が(C3セルの値がBなら)コンボボックス21をマスタシートのE2からE13までを選択できるようにしたい '----------------------------------------区切っています。 End Sub

  • オプションボタン選択でコンボボックス有効

    ExcelVBAでユーザーフォームを作成しているのですが、昨日までうまく動作していたことが、突然動かなくなりました。 オプション1を選択 ↓ コンボボックス1有効  ※他のコンボボックスは無効 ↓ オプション2を選択 ↓ コンボボックス2有効  ※コンボボックス1も含め他のコンボボックスは無効 という感じで動作させたいです。 書いたコードはこんな感じです。 Private Sub OptionButton1_Click () Dim i As Long Dim lastRow As Integer lastRow = Cells(Row.Count, 1).End(xlUp).Row If OptionButton1.Value = True Then OptionButton1.Enabled = True With ComboBox1 If ComboBox1 = "" Then For i = 2 To lastRow .AddItem Worksheets("sheet1").Cells(i, 1).Value Next i End If End With ComboBox1.ListIndex = 0 ComboBox2.Enabled = False ComboBox3.Enabled = False End If End Sub コードの間違いや改善点などありましたら教えて下さい。 よろしくお願いします。

  • エクセルVBAのコンボボックスについて

    エクセルVBAでActiveXコントロールのコンボボックスを配置して以下の プログラムを記述しているのですが、 コンボボックスでAを選択した後に、もう一度Aを選択したときに イベントが発生しません。 Private Sub ComboBox1_Change()ならイベントが発生しないのは 分かるのですが、Clickの場合は、選択された値が変わらなくても イベントが発生すると思ってたのですが。 VB6では問題なく発生しています。 ちなみにセルの入力規則ではなくてコンボボックスで実現したいです。 Private Sub ComboBox1_Click() 'ここに処理を記述 End Sub

  • Excel VBAのコンボボックス

    お世話になります。 コンボボックス1と2と3は選択されますが コンボボックス4には何の表示もされません。 選択して条件設定は4つ以上できないのでしょうか? Dim ITE As Variant Dim flg As Variant Private Sub ComboBox3_Change() 'ComboBox4セット Dim ico As Long ico = 1 With ThisWorkbook.Worksheets("data") KEY = Me.ComboBox1.Text KEY2 = Me.ComboBox2.Text KEY3 = Me.ComboBox3.Text Me.ComboBox4.Clear Do While .Cells(ico, 1) <> "" If .Cells(ico, 1) = KEY And .Cells(ico, 2) = KEY2 And .Cells(ico, 3) = KEY3 Then ITE = .Cells(ico, 4).Value flg = 0 For I = 0 To Me.ComboBox4.ListCount - 1 If ITE = Me.ComboBox4.List(I) Then flg = 1 Next If flg = 0 Then Me.ComboBox4.AddItem ITE End If ico = ico + 1 Loop End With Me.ComboBox4.SetFocus End Sub

  • コンボボックスについて

    コンボボックスでドロップダウンメニューが押された場合の処理は Private Sub ComboBox1_DropButtonClick() 処理 End Sub リスト項目がクリックされた時は Private Sub ComboBox1_Click() 処理 End Sub 上記の関数を組み合わせるにはどうすればよいでしょうか?用はComboBoxのドロップダウンメニューが押されて さらにリストの項目が選択してクリックした時はなんらかの処理を行うようにしたいのですがうまくいきません。よろしくお願い致します。

  • コンボボックスの値をVBAで配列に格納したい

    コンボボックスの値をVBAで配列に格納したいのですが どういうコードにすればいいでしょうか? コンボボックスの参照元を格納するのではなく、 現在コンボボックスに表示されてるデータを格納したいです。 今、 Sub test() Dim varComb As Variant varComb = ActiveSheet.ComboBox1.Value End Sub というコードを作ったのですが、 これだと「aaa」しか取得できません。 varCombに"aaa,bbb,ccc"とカンマ区切りで格納するにはどうすればいいでしょうか? ComboBox1に表示されるデータ数を取得し、 ループさせ、 varComb = varComb & "," & ActiveSheet.ComboBox1.Value で格納していくイメージですが、コードが作れません。 よろしくお願いします。

  • コンボボックスの開いたリストを閉じるには

    コンボボックスのリストを開くのはComboBox1.DropDownでできますが、閉じるのはどういう風にやればいいでしょうか。 今ユーザーフォームで Private Sub Combobox1_Change() ComboBox1.Clear v = ComboBox1.Text For i = 1 To 300 c = Worksheets("Sheet1").Cells(i, "A") If v = Left(c, Len(v)) And Len(v) > 0 Then ComboBox1.AddItem c End If Next i ComboBox1.DropDown End Sub と言う風にしていますが、リストを開きっぱなしだと変な表示になってしまい、マウスクリックで一旦閉じてから開かないと変な表示になってしまうのです。 そこで一旦リストをマクロで閉じさせてから再び開きたいのですが、どうすればいいでしょうか。

  • EXCEL VBA コンボボックスでのLISTINDEXの値

    初めて質問させていただきます。 EXCEL VBAでコンボボックスを設定したときのLISTINDEXの値についてですが、 コンボボックスがフォーム内に3つ(ComboBox1,2,3)あり、次のようなコードの入力を行い、 ComboBox1 Sub Userform_Intialize()  With CcomboBox1   AddItem"AAA" '・・・ここの値は0ですね   AddItem"BBB" '・・・ここの値は1ですね  End With End Sub sub ComboBox1_Change()  Me.combobox2.Clear  Select Case Me.ComboBox1.ListIndex   Case 0   Me.ComboBox2.AddItem "2AAA" '・・・ここの値は0ですね    Me.ComboBox2.AddItem "2BBB" '・・・ここの値は1ですね   Case 1   Me.ComboBox2.AddItem "2CCC" '・・・ここの値は何になりますか?   Me.ComboBox2.AddItem "2DDD" '・・・ここの値は何になりますか?  End Select End Sub このcombobox2の4つの項目から、 更にcombobox3の選択項目に分岐するように設定したいのです。 わかりやすいように、ComboBox3もComboBox2のように作成したいのですが、 このように入力した場合、ComboBox2で"2CCC"を選択した場合、 ListIndexの値が2ではないようなのです。 この"2CCC"と"2DDD"のListIndex値はいくつになるのでしょうか? どなたか教えて下さい。

  • コンボボックスのクリア方法について教えて下さい(vb6.5)

    コンボボックスのクリア方法について教えて下さい(vb6.5) ComboBox1で選択したものによって、 ComboBox2で表示するものを変えたいと思っています。 ただ、一度ComboBox1で選択した後にComboBox2を開くと、 ComboBox2は前回のものがどんどん足されていきます。 コンボボックスのクリア方法について、 どの様にすればよいかご教示のほど、 宜しくお願い致します。 Private Sub ComboBox1_Change() UserForm1.ComboBox2.RemoveItem (0) If ComboBox1.Text = 1 Then UserForm1.ComboBox2.AddItem "A" UserForm1.ComboBox2.AddItem "B" UserForm1.ComboBox2.AddItem "C" ElseIf ComboBox1.Text = 2 Then UserForm1.ComboBox2.AddItem "D" UserForm1.ComboBox2.AddItem "E" UserForm1.ComboBox2.AddItem "F" Else UserForm1.ComboBox2.AddItem "G" UserForm1.ComboBox2.AddItem "H" UserForm1.ComboBox2.AddItem "I" End If End Sub -------------------------------------- Private Sub UserForm_Initialize() UserForm1.ComboBox1.AddItem "1" UserForm1.ComboBox1.AddItem "2" UserForm1.ComboBox1.AddItem "3" End Sub

専門家に質問してみよう