Excel VBA - 如何 link 电子表格中带有下拉列表的用户表单组合框?

Excel VBA - How can I link an userform combobox with a dropdown list in a spreadsheet?

在我的电子表格中,我有一个下拉框,可以动态更新电子表格中的 headers,如下面的 gif 附件所示。

我的数据输入用户表单上还有一个组合框,它使用与电子表格中的下拉框相同的来源。

如您所见,在用户窗体的底部,我有一个列表框 (lstDatabase),显示电子表格中的 headers(有关代码,请参见下面的代码块)

Dim iRow As Long
iRow = [Counta(Sheet4!D:D)]
With DataEntry

.lstDatabase.ColumnCount = 17
.lstDatabase.ColumnHeads = True

.lstDatabase.ColumnWidths = "50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50"
 
 If iRow > 1 Then
 .lstDatabase.RowSource = "Sheet4!A4:Q" & iRow
 
 Else
 .lstDatabase.RowSource = "Sheet4!A5:Q5"
 End If
 End With

目前,我可以更改这些 headers 的唯一方法是关闭表单,更改电子表格中 drop-down 列表的选择,然后重新启动用户表单,此时它'会更新到新的 headers.

我想要的是将用户表单上的组合框与电子表格中的 drop-down 列表互连,并能够使用在组合框。

伪代码示例

Userform combobox selects "PL531"
Listbox and spreadsheet both dynamically update their headers to show the headers relevant to "PL531"

Userform combobox changes selection to "PL931e"
Listbox and spreadsheet immediatelly dynamically update their headers to show the headers relevant to "PL931e

显然我知道 lstDatabase.RowSource 的代码必须根据 Combobox changed() 方法中的 if 语句进行更改,但我不知道我如何能够引用选择在电子表格的下拉框中进行匹配,以匹配在用户表单组合框中所做的选择,然后更新列表框 headers.

最后,我决定通过组合框创建 6 个单独的传播sheet 和 link 它们。

在 select 值时使用组合框,例如PL531e 然后它将 select 名为 PL531e 的作品 sheet 并将数据输入到相应的作品 sheet.

我使用以下代码来完成此操作:

Private Sub CommandButton1_Click()
Dim sh As Worksheet
Dim AddNew As Range

If ComboBox1.Value = "PL531e" Then
Set sh = ThisWorkbook.Sheets("PL531e")
ElseIf ComboBox1.Value = "PL931" Then
Set sh = ThisWorkbook.Sheets("PL931")
ElseIf ComboBox1.Value = "PL968" Then
Set sh = ThisWorkbook.Sheets("PL968")
ElseIf ComboBox1.Value = "PN410X" Then
Set sh = ThisWorkbook.Sheets("PN410X")
ElseIf ComboBox1.Value = "PN510" Then
Set sh = ThisWorkbook.Sheets("PN510")
ElseIf ComboBox1.Value = "GL100" Then
Set sh = ThisWorkbook.Sheets("GL100")
End If
Set AddNew = sh.Range("A6536").End(xlUp).Offset(1, 0)

AddNew.Offset(0, 0).Value = TestNo.Text
AddNew.Offset(0, 1).Value = NeuronID.Text
AddNew.Offset(0, 2).Value = DateCode.Text
AddNew.Offset(0, 3).Value = TextBox4.Text
AddNew.Offset(0, 4).Value = TextBox5.Text
AddNew.Offset(0, 5).Value = TextBox6.Text
AddNew.Offset(0, 6).Value = TextBox7.Text
AddNew.Offset(0, 7).Value = TextBox8.Text
AddNew.Offset(0, 8).Value = TextBox9.Text
AddNew.Offset(0, 9).Value = TextBox10.Text
AddNew.Offset(0, 10).Value = TextBox11.Text
AddNew.Offset(0, 11).Value = TextBox12.Text
AddNew.Offset(0, 12).Value = TextBox13.Text
AddNew.Offset(0, 13).Value = TextBox14.Text
AddNew.Offset(0, 14).Value = TextBox15.Text
AddNew.Offset(0, 15).Value = TextBox16.Text
AddNew.Offset(0, 16).Value = TextBox17.Text

End Sub

下一步,我将使用问题中所述的原始作品sheet作为概述sheet,并将使用数据验证drop-down列表动态更新所有单元格向我显示每个单独作品中的单元格信息sheet 与该特定部分相关,包括 headers 和随附数据。

尚未弄清楚我为此使用的是什么公式,但当我发现时会更新此答案。