我需要两个相互依赖的下拉列表。在VBA中,我尝试为单个列表创建下拉列表,但我无法使其依赖。下拉列表就像
第一个下拉列表的内容
dd1
dd2
dd4
dd5
dd6
对应的list2是
对于 dd1
ddd1
ddd2
ddd3
对于 dd2
ddd4
ddd6
同样明智。
我已经完成了代码
With Range("D1").Validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=TempList
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
列表中不得有任何空格/空单元格。
这个我也试过
但是上面的代码支持单个单元格下拉菜单。我需要列中的整个单元格作为下拉菜单。
或者是否有任何方法可以使用公式直接创建依赖下拉列表并消除两列中的空白单元格。
提前致谢
最佳答案
您必须将这些值的关系存储在某处。然后,当选择其中一个时,填充另一个。以下是值存储在 A 列和 B 列中的示例。
A B
--- ----
dd1 ddd1
dd1 ddd2
dd1 ddd3
dd2 ddd4
dd2 ddd6
在第一个列表的更改事件中,根据第一个列表中选择的内容查找要放入第二个列表中的内容。
Private Sub ComboBox1_Change()
Dim lRow As Long
'Clear out the second list
ComboBox2.Clear
lRow = 1
Do While lRow <= ws.UsedRange.Rows.Count
If ws.Range("A" & lRow).Value = ComboBox1.Text Then
'Column A matches what was selected in the first list so add the value in columnB to the second list.
ComboBox2.AddItem ws.Range("B" & lRow).Value
End If
lRow = lRow + 1
Loop
End Sub
如果您的数据存储在其他地方(例如数据库),
Private Sub ComboBox1_Change()
Dim strSQL as string
'Clear out the second list
ComboBox2.Clear
strSQL = "Select fieldname2 from tablename where fieldname1 = '" & ComboBox1.Text & "'"
'Put the results of the query into combobox2
End sub
关于vba - 如何使用VBA在Excel中创建多个依赖下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31607763/