gpt4 book ai didi

vba - 我们如何使用 VBA 在 Excel 中创建多个依赖下拉列表

转载 作者:行者123 更新时间:2023-12-04 20:14:17 25 4
gpt4 key购买 nike

我需要两个相关的下拉列表。在 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

列表中不能有任何空格/空单元格。

我也试过这个

https://siddharthrout.wordpress.com/2011/07/29/excel-data-validationcreate-dynamic-dependent-lists-vba/

但是上面的代码支持单个单元格下拉。我需要列中的整个单元格作为下拉列表。

或者是否有任何方法可以使用公式直接创建相关下拉列表,并消除两列中的空白单元格。

提前致谢

最佳答案

您必须将这些值的关系存储在某处。然后当一个被选中时填充另一个。这是一个将值存储在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com