0

2 番目の内容が最初の値に依存する 2 つのドロップダウン メニューを生成するための最良の方法は何ですか?

2 番目のドロップダウンは空白で作成され、最初のドロップダウンから新しい値を選択するたびに、2 番目のドロップダウンを参照するある種の属性を「上書き」しますか? または、最初のドロップダウンがクリックされるたびに、2 番目のドロップダウン メニューを再作成する必要がありますか?

コード スニペットは大歓迎です。

4

1 に答える 1

1

使用しているドロップダウンの種類によって異なります。データ検証を使用してセル内ドロップダウンを使用している場合、2 番目のドロップダウン セルのソースを間接関数に設定すると、最初のドロップダウンを参照する名前付き範囲にデータが含まれます。詳細はこちら: http://www.contextures.com/xlDataVal02.html

最初のドロップダウンに大量のデータがある場合、名前付き範囲をすべて作成するのは面倒です。

また、VBA を使用してユーザーフォームでこれを行いました。

Public Branches() As String
Public Function List_Branch_Set(lngRegion As String) As Long
    Dim lngAllBranches As Long
    Dim lngReg As String
    Dim lngBranches As Long
    Dim lngIdx As Long
    Dim rw As Long
    lngAllBranches = Sheets("sheet1").Range("C1").Value
    lngBranches = CountBranches(lngRegion)
    If lngBranches > 0 Then
        ReDim Branches(lngBranches - 1)
        For rw = 2 To lngAllBranches + 1
            lngReg = Sheets("sheet1").Cells(rw, 2).Value
            If lngReg = lngRegion Then
                Branches(lngIdx) = Sheets("sheet1").Cells(rw, 1).Value
                lngIdx = lngIdx + 1
            End If
        Next rw
    End If
    List_Branch_Set = lngBranches
End Function

私のデータは、次の形式でシート 1 に保存されます。

関数 CountBranches() は、選択した領域に一致するこのリスト内の行数をカウントします。次に、最初の cbo にトリガーが必要です。

Private Sub cboRegion_Change()
    Dim lngNum As Long
    Me.cboBranch.Clear
    lngNum = List_Branch_Set(NullHandleText(Me.cboRegion))
    If lngNum <> 0 Then
        Me.cboBranch.List = Branches
    End If
End Sub
于 2012-12-04T18:19:14.593 に答える