- ベストアンサー
VBAマクロのコンボボックス
フォームのコンボボックスの値の取り出しについて教えてください。 ボックスのリストはあらかじめセル範囲指定で取り込み、そのリスト値のどれかを選ぶとアクションをおこすというものを作成したいです。 (値によってアクションも変える) 詳しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まずComboBox1のリスト取り込みにはRefEditを使用します。 これはA3:A7のように上下の関係のデータを範囲選択するとこのデータをComboBox1に取り込めるようにしました。 使い方は 例えばC3:C8を範囲選択する。 ComboBox1よりデータを選択する。 すると選択したデータによって処理1~3が現れる。 Private Sub ComboBox1_Change() Select Case ComboBox1.ListIndex() Case 0 MsgBox "処理1" Case 1 MsgBox "処理2" Case Else MsgBox "処理3" End Select End Sub Private Sub RefEdit1_Change() Dim str As String str = CStr(Replace(RefEdit1, "$", "")) str = Mid(str, 8, Len(str) - 7) ComboBox1.RowSource = str End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 この質問を元に、新しい質問をつけているようですが、そのフォームって何ですか? #2さんの言うように、UserFormなのですか? Excelでは、フォームと言えば、ワークシート上のフォームを指しますが、一体、どちらなのですか?
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 例えば、こういうことではありませんか?フォームのDropDowns(コンボボックス)の戻り値は、ListIndex 値ですから、数字で受けてあげます。 今は、MsgBox が出すようになっていますが、実際には、マクロにするなり、Call するなりすればよいと思います。 Sub DropDownActionResult() Select Case ActiveSheet.DropDowns(1).Value Case 1 MsgBox "A" Case 2 MsgBox "B" Case 3 MsgBox "C" End Select End Sub ※実際のコードでは、ActiveSheet というのは、既定のシートにしてくださいね。
補足
すみません、シート上のコンボボックスです。 説明不足でした。