我需要两个依赖的下拉列表。在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
列表中不得有任何空格/空单元格。
我也试过这个
但是上面的代码支持单个单元格下拉。我需要将整列单元格作为下拉列表。
或者是否有任何方法可以使用公式直接创建相关的下拉列表,同时消除两列中的空白单元格。
提前致谢
答案 0 :(得分:2)
您必须在某处存储这些值的关系。然后当选择一个时,填充另一个。下面是一个示例,如果值存储在列A和A列中。乙
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