Excel VBA - 如何将用户表单组合框与电子表格中的下拉列表链接?

问题描述

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

enter image description here

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

enter image description here

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

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

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

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

目前我可以改变这些标题的唯一方法关闭表单,更改电子表格上下拉列表的选择并重新启动用户表单,此时它将更新为新标题

我想要的是将用户表单上的组合框与电子表格中的下拉列表相互链接,并能够使用组合框中所做的选择动态更新列表框中显示标题

代码示例

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 语句进行更改,但我不知道我如何能够引用在电子表格上所做的选择下拉框以匹配在用户表单组合框中所做的选择,然后更新列表框标题

解决方法

最后,我决定创建 6 个单独的电子表格并通过组合框将它们链接在一起。

在选择值时使用组合框,例如PL531e 然后它将选择标题为 PL531e 的工作表并将数据输入到相应的工作表中。

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

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

接下来,我正在使用问题中所述的原始工作表作为概览表,并将使用数据验证下拉列表动态更新所有单元格,以向我显示每个单独工作表中的单元格信息包括标题和随附数据的特定部分。

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