Excel用户窗体下拉列表:如何获取所有列的数据?
获取Excel用户窗体组合框多列数据的方法
方法1:通过组合框事件实时读取多列数据
当用户选中组合框里的选项时,利用Change事件直接读取每一列的内容,赋值给对应的文本框即可。注意组合框的列索引是从0开始计数的(第一列是0,第二列1,第三列2)。
示例VBA代码:
Private Sub ComboBox1_Change() ' 先判断是否有选中项 If ComboBox1.ListIndex <> -1 Then TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 0) ' 读取第一列数据 TextBox2.Value = ComboBox1.List(ComboBox1.ListIndex, 1) ' 读取第二列数据 TextBox3.Value = ComboBox1.List(ComboBox1.ListIndex, 2) ' 读取第三列数据 End If End Sub
方法2:先正确配置组合框的多列显示属性
在用户窗体设计模式下,选中你的组合框,在右侧属性窗口里做两个关键设置:
- 将
ColumnCount属性设为3(对应你要显示的3列数据) ColumnWidths属性可以设置各列的显示宽度,比如填50;50;50(单位为磅),如果不想让某列显示,直接把对应宽度设为0即可
完成配置后,再配合上面的Change事件代码,就能顺利读取每一列的数据,不用局限于BoundColumn的设置(BoundColumn只是用来指定组合框默认返回的单列值,不影响读取其他列)。
方法3:双击选项触发填充(可选)
如果想要通过双击组合框选项来填充文本框,可以添加DblClick事件代码:
Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) If ComboBox1.ListIndex <> -1 Then TextBox1.Value = ComboBox1.List(ComboBox1.ListIndex, 0) TextBox2.Value = ComboBox1.List(ComboBox1.ListIndex, 1) TextBox3.Value = ComboBox1.List(ComboBox1.ListIndex, 2) End If End Sub
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

