1

ドロップダウン (フォーム コントロール) リストに表示する値を格納する 3 つのセル範囲 (ワークブックの別のシートから) があります。セル範囲をリセットするマクロ コード、または他のセル値に基づいてドロップダウン リストのオプションを定義する名前付き範囲が必要です。. 私はこれまでのところ成功していない次のコードを試しました:

サブ DropDown11_Change()

If Range("A1") = 1 Then
(シート 1 a1:a50 から範囲を入力)

ElseIf Range("A1") = 2 Then
(sheet2 a1:a50 から範囲を入力)

ElseIf Range("A1") = 3 Then
(シート 3 a1:a50 から範囲を入力)

End If
End Sub

助言がありますか?

ありがとう

4

2 に答える 2

0

名前付き範囲を使用して同様のことを行いました。これも役立つはずの例です。

Sub DropDown11_Change()

Dim dropdown As String

If Range("A1") = 1 Then
    '(input range from sheet1 a1:a50)
    dropdown = "=Sheet1!R1C1:R50C1"
ElseIf Range("A1") = 2 Then
    '(input range from sheet2 a1:a50)
    dropdown = "=Sheet2!R1C1:R50C1"
ElseIf Range("A1") = 3 Then
    '(input range from sheet3 a1:a50)
    dropdown = "=Sheet3!R1C1:R50C1"

End If

ActiveWorkbook.Names.Add Name:="DynamicList", RefersToR1C1:=dropdown

End Sub
于 2014-12-03T17:00:21.473 に答える
0

これは、これらのいずれかを標準のモジュール (例: 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

Sheet1 コード

于 2014-12-03T16:00:32.413 に答える