ユーザーフォームツールバーからコンボボックスをシートにドラッグして、ドロップダウンを作成しました。本のいくつかのセルからいくつかの値を割り当てました。次に、VBAコードで、選択したドロップダウンアイテムの値に文字列の形式でアクセスできるようにします。
ドロップダウンにはテキストのみが含まれています。
また、この新しく作成されたドロップダウンの名前を見つけるにはどうすればよいですか(プロパティのどこにもありません!)?
Dim dd As DropDown
Set dd = ActiveSheet.DropDowns("Drop Down 6")
Set r = Sheet2.Range(dd.ListFillRange)
Set ddValue = r(dd.Value)
注:
DropDownは表示可能なクラスではありません。あなたはそれを使うだけでそれは機能します。
ドロップダウンの名前[〜#〜] control [〜#〜](ユーザーフォームではない)を見つけるには、
画面の左上隅の列Aのすぐ上にある名前ボックス。コントロールを右クリックすると、コントロールの名前が表示されます。-
Sheet2は、ドロップダウンリストが入力される場所です。したがって、リストデータがどこにあっても。
それが皆さんのお役に立てば幸いです。
名前を知らなくても文字列を取得する方法は次のとおりです。
Dim DD As Shape
Set DD = ActiveSheet.Shapes(Application.Caller)
MsgBox DD.ControlFormat.List(DD.ControlFormat.ListIndex)
ランスロバーツはもうすぐそこにいました。サブを呼び出すドロップダウンの名前がわからない場合は、次を使用します。
Dim dd as DropDown
Set dd=ActiveSheet.Shapes(Application.Caller).OLEFOrmat.Object
Dim ddVal as String
ddVal=dd.List(dd.ListIndex)
これを使用して、多くのドロップダウンを持つフォームの汎用サブを作成しました。
これは不格好な方法ですが、機能するはずです。
Dim o As Object
For Each o In Worksheets("Sheet1").Shapes
MsgBox o.Name
Next o
DropDowns
オブジェクトの非表示のWorksheet
コレクションメンバーもあり、これを繰り返すことができます。これにより、Forms
ツールバーから挿入されたアイテムは検出されますが、Control Toolbox
ツールバーから挿入されたアイテムは検出されません。