【发布时间】:2019-02-21 07:33:55
【问题描述】:
我正在搜索近两个小时以找到以下解决方案。在 Excel 中,我有两列(一列用于主记录,一列用于从记录)。基本上,在 Combobox1 中,我想填充所有主记录。如果选择 MasterRecord A,我希望 Combobox2 只显示属于 A 的 SlaveRecords,而不显示属于其他 Master Records 的其他记录。
我添加了互操作程序集并打开了 Excel(已经有连接)。非常感谢您的帮助!
Private Sub Combobox2_Populate()
'Start Excel Script to populate ComboBox2
Dim excel As Application = New Application
Dim w As Workbook = excel.Workbooks.Open(Filename:=databasestatus, [ReadOnly]:=True)
Dim sheet As Worksheet = w.Sheets("AIR_NL_1")
Dim StartRow As Integer
Dim TotalRows As Integer
ComboBox2.Items.Clear()
sheet.UsedRange.AutoFilter(Field:=9, Criteria1:=ComboBox1.SelectedItem, Operator:=XlAutoFilterOperator.xlFilterValues)
TotalRows = sheet.Range("A1").CurrentRegion.Rows.Count
For StartRow = 3 To TotalRows
If XlCellType.xlCellTypeVisible = True Then
ComboBox2.Items.Add(sheet.Range("H:H").Cells(StartRow, 1).Text)
End If
Next
w.Close(SaveChanges:=False)
End Sub
【问题讨论】:
-
您能否向我们提供一个complete and verifiable 示例,说明您迄今为止所做的尝试?提前致谢!
-
西莫你好。请在上面找到。所以我已经用 A 列(或 I 列)(主记录)中的记录填充了 Combobox1。我尝试使用 Combobox1.SelectedItem 捕获主记录选择。我现在尝试的是过滤工作表,然后尝试用所有从属记录填充 B 列(或 H 列)。
-
我建议您使用以下逻辑:使用返回所有主记录的查询填充
DataTable。使用返回属于 MasterRecords 的SlaveRecords的查询填充第二个DataTable。用第一个数据表填充ComboBox1,用第二个数据表填充ComboBox2。 @YassinKulk 你明白了吗? -
现在我要发射了,大约一年半后我会回来。如果您仍然为此苦苦挣扎,我会做出适当的回答。
-
嗨西莫。享用午餐!我明白你提出的逻辑。作为 vb.net 的新手,我将尝试找到有关创建此数据表的示例。谢谢!
标签: excel vb.net combobox conditional