2 番目の内容が最初の値に依存する 2 つのドロップダウン メニューを生成するための最良の方法は何ですか?
2 番目のドロップダウンは空白で作成され、最初のドロップダウンから新しい値を選択するたびに、2 番目のドロップダウンを参照するある種の属性を「上書き」しますか? または、最初のドロップダウンがクリックされるたびに、2 番目のドロップダウン メニューを再作成する必要がありますか?
コード スニペットは大歓迎です。
使用しているドロップダウンの種類によって異なります。データ検証を使用してセル内ドロップダウンを使用している場合、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