• ベストアンサー

VBAマクロのコンボボックス

フォームのコンボボックスの値の取り出しについて教えてください。 ボックスのリストはあらかじめセル範囲指定で取り込み、そのリスト値のどれかを選ぶとアクションをおこすというものを作成したいです。 (値によってアクションも変える) 詳しくお願いします。

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

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

まず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)
回答No.3

こんにちは。 この質問を元に、新しい質問をつけているようですが、そのフォームって何ですか? #2さんの言うように、UserFormなのですか? Excelでは、フォームと言えば、ワークシート上のフォームを指しますが、一体、どちらなのですか?

fm0606
質問者

補足

すみません、シート上のコンボボックスです。 説明不足でした。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 例えば、こういうことではありませんか?フォームの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 というのは、既定のシートにしてくださいね。

関連するQ&A