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

标签 vba excel excel-2007

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

相关文章:

excel - 发送带有附件和签名的 Outlook 电子邮件

Excel VBA SeriesCollection 具有不同 xvalue 比例的两个系列

sql - 从 xls (Excel) 文件创建 SQL 表

excel-2007 - 如何通过 OpenXML sdk 将 excel 2007 文档方向更改为横向

VBA : Change the style of text when sending a mail

excel - 在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

vba - 在文本末尾添加一个字符并将字母 A 增加到 B

VBA 锁定了我的工作表

excel - 如何使用 VBA 将形状粘贴到 Excel 工作表中的现有形状之后?

excel - 是否可以动态控制Excel 2007中文本框的位置