用VBA向列表框(ComboBox或ListBox)中填加数据

用VBA向列表框(ComboBox或ListBox)中填加数据

向列表框中填加 数据的方法很多,下面根据实例介绍3种最常用到的方法:

图1

图2
如图1所示的下拉列表框(组合框),图2为其数据源,图2所有在 工作表表名为: 设置
无论哪种方法我们都首先要知道最后这个数据所在的行数。如图2的第4行。
复制内容到剪贴板
代码:
    Dim l As Long         '表示行数时,应该习惯设成长整型
    l = Sheets("设置表").Range("A65536").End(xlUp).Row
上述代码请参见《 VBA得到EXCEL表格中的行数和列数

方法一:循环Additem
复制内容到剪贴板
代码:
Sub OkExcel01()
    'www.okexcel.com.cn
    Dim l As Long         '表示行数时,应该习惯设成长整型
    Dim i As Long
    Dim ws As Worksheet
   
    Set ws = Worksheets("设置表")
    l = ws.Range("A65536").End(xlUp).Row
    For i = 2 To l
        ComboBox1.AddItem (ws.Cells(i, 1))
    Next
End Sub
这种方法常应用在:(1)将数组加到列表中;(2)不连续的区域;(3)从 数据库中读出的数据等等。

方法二:设置数据源区域
复制内容到剪贴板
代码:
Sub OkExcel02()
    'www.okexcel.com.cn
    Dim l As Long
    Dim ws As Worksheet
   
    Set ws = Worksheets("设置表")
    l = ws.Range("A65536").End(xlUp).Row
    ComboBox1.List = ws.Range("A2:A" & l).Value
End Sub
这种方法常应用在连续的区域,如果源区域的数据固定(如民族)可以省算l的步骤。

方法三:名称 定义法:
首先定义名称:(菜单:插入/名称/定义)

图3
如图3所示,定义名称
当数据源中的数据有增减变化时执行如下过程:
复制内容到剪贴板
代码:
Sub OkExcel03_1()
    'www.okexcel.com.cn
    Dim l As Long
    Dim ws As Worksheet
    Set ws = Worksheets("设置表")
    l = ws.Range("A65536").End(xlUp).Row
    ThisWorkbook.Names("类别").RefersTo = "=设置表!$A$2:$A$" & l
End Sub
填写数据时执行职下过程:
复制内容到剪贴板
代码:
Sub OkExcel03_2()
    'www.okexcel.com.cn
    ComboBox1.List = ThisWorkbook.Names("类别").RefersToRange.Value
End Sub
这种方法常应用在连续的区域,并且一个数据源应用于多个列表框,如在不同的窗体中。
  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值