【发布时间】:2016-12-21 23:38:20
【问题描述】:
背景
我正在 ms excel 中开发一个用户表单,为分布在多个工作表上的数据提供一个“仪表板”。用户窗体显示一个组合框,然后从该选择中填充列表框。用户窗体还允许通过“复制”按钮复制列表框信息。列表框的行源可以是单列(例如,Budget!$L$191)或多列和行(例如,JKG.Slave!$I$38:$JM$44)。
我在列表框属性中选择了“MultiSelect”属性。
挑战
如何在多列(如果需要)列表框中显示所有行源数据?
如何动态捕获支持多列列表框所需的列数?
我可以使用变量来捕获列数并让它在运行时填充列表框吗?
项目代码示例
Public Sub ComboBox1_Change()
Dim cSelect As String
Dim lcount As Integer
cSelect = UserForm2.ComboBox1.Value
UserForm2.ListBox1.RowSource = cSelect
lcount = UserForm2.ComboBox1.ColumnCount
MsgBox lcount
End Sub
即使行源是多行多列选择,变量 lcount 也会返回一 (1)。
感谢大家的帮助。
【问题讨论】:
-
用户是否从 ComboBox1 中选择了不同的范围?您是在查找组合框中的列数还是选定范围内的列数?
标签: vba excel listbox userform excel-2016