これは、これらのいずれかを標準のモジュール (例: Module1) に配置するのに役立ちます。
Sub DropDown1_Change()
Dim ddFillRange As String
If Sheet1.Range("A1") = 1 Then
ddFillRange = "Sheet1!A1:A50"
ElseIf Sheet1.Range("A1") = 2 Then
ddFillRange = "Sheet2!A1:A50"
ElseIf Sheet1.Range("A1") = 3 Then
ddFillRange = "Sheet3!A1:A50"
End If
Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange
End Sub
名前付き範囲を使用する場合は、次を使用できます。
Sub DropDown1_Change()
Dim ddFillRange As String
If Sheet1.Range("A1") = 1 Then
ddFillRange = Range("NamedRange1").Name
ElseIf Sheet1.Range("A1") = 2 Then
ddFillRange = Range("NamedRange2").Name
ElseIf Sheet1.Range("A1") = 3 Then
ddFillRange = Range("NamedRange3").Name
End If
Sheet1.Shapes("Drop Down 1").ControlFormat.ListFillRange = ddFillRange
End Sub
次に、セル A1 が変更されたときにこれらを起動するには、Sheet1 のモジュールに次のコードを配置する必要があります (VBA エディタ ウィンドウで Sheet1 を右クリックし、ビュー コードを選択します...下の図を参照)。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("A1")) Is Nothing Then DropDown1_Change
End Sub
