|
シート上に
表示 → ツールバー フォーム のコンボボックスがあるとして、
名前は、「ドロップ 1」「ドロップ 2」の場合。
1、
ListFillRangeを使用(セル参照)
コンボボックス右クリック → コントロールの書式設定 →
コントロール → 入力範囲
の場合、
Sub コンボ初期設定()
ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.ListFillRange = "Sheet2!A10:A15"
End Sub
Sub コンボクリア()
ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.ListFillRange = Clear
End Sub
作ったコンボボックスに下記マクロをマクロ登録(2、と共通で使用できます。)
Sub コンボチェンジ()
CBXNm = Application.Caller
With ActiveSheet.Shapes(CBXNm).OLEFormat.Object
No = .ListIndex
MsgBox No & " 番目" & vbLf & vbLf & _
.List(No)
End With
End Sub
2、
ListFillRangeを使わない方法(配列仕様)
Sub コンボ初期設定配列()
Dim ListTb As Variant
'ListTb = Array("A1", 5, "A3", "A4", "A5")
' ↑ 数値が入るとだめ。
' ↓ 文字ならOK。
ListTb = Array("A1", "5", "A3", "A4", "A5")
ActiveSheet.Shapes("ドロップ 1").OLEFormat.Object.List = ListTb
Erase ListTb
End Sub
Sub コンボクリア()
ActiveSheet.Shapes("ドロップ 2").OLEFormat.Object.List = vbNullString
End Sub
マクロ登録するコンボチェンジマクロは、1と同じ。
|
|