该用户窗体有3列,一个组合框(供应商列表)和一个列表框(供应商的产品/服务列表)以及一个带有所选产品/服务价格的文本框。
Example of menu (3rd column item not added)
用户按下按钮以添加一行,该行在可滚动框架内填充3列的新行。我的目标是使列表框的选项根据该行组合框中的选择而更改。
我有一个侦听器(请参阅我先前在combobox(number)_change()上的帖子以了解其工作原理),如下所示...
Private Sub ControlHandlerCollection_ComboBoxChange(ComboBox As MSForms.ComboBox)
MsgBox ComboBox.Name
End Sub
例如,我编写此代码来测试change子是否适用于ComboBox#87。但是,我不知道如何告诉相同编号的列表框根据ComboBox#的选择更改其列表选项。
如果我有一个专门用于ComboBox1_Change()的侦听器,则只需在其中编写ListBox1的更改,但我是针对动态“无限”数量的ComboBox编写的。
我当前的攻击计划是在代码块上方的代码框中的子代码中编写代码,以分析ComboBox.Name的结果以获取数字,例如,结果为“ ComboBox15”,我可以编写一个分配给“ ListBox” +(ComboBox.Name-“ ComboBox”)的变量以调用ListBox(number),但是我不确定我是否可以实际调用基于变量的列表框名称。
答案 0 :(得分:0)
好的,父亲帮助我解决了这个问题。它有点静态,但是完全可以满足我的需求。
必须将供应商数据编辑成多个工作表,并使用“数据”下的“定义名称”工具来命名范围。列表框根据组合框的选择而更改。
Dim listBoxName As String
listBoxName = "myList" & ComboBox.Tag
Dim rangeName As String
rangeName = "company_1"
Select Case ComboBox.value
Case "Company 1"
rangeName = "company_1"
Case "Company 2"
rangeName = "company_2"
End Select
Dim listBox As Control
Set listBox = Me.Controls(listBoxName)
listBox.RowSource = rangeName
以上代码已添加到原始线程中提到的private子代码中。