精华内容
下载资源
问答
  • 他山之石——VBA列表框和组合框

    千次阅读 2018-07-02 18:30:41
    继续学习VBA!不过,这部分都属于“控件”级编程,比较琐碎,偏“前端”一点,在目前的工作中用的不多。毕竟,在数据分析、自动化领域中,界面不是必须的,而数据处理逻辑及数据质量(准确性、完整性)则是重中之重...

    继续学习VBA!不过,这部分都属于“控件”级编程,比较琐碎,偏“前端”一点,在目前的工作中用的不多。

    毕竟,在数据分析、自动化领域中,界面不是必须的,而数据处理逻辑及数据质量(准确性、完整性)则是重中之重。界面可以说是更高层次的要求了,在时间、成本的约束下,界面这个“范围”自然要受到挤压了。


    展开全文
  • VBA_为列表框添加列表项的方法.rar
  • 学习资源:《Excel VBA从入门到进阶》第57集 by兰色幻想本节讲述列表框和组合框。如下图所示,列表框,顾名思义,用于提供一组条目(数据项),用户可以用鼠标选择其中一个或者多个条目,但是不能直接编辑列表框的...

    556e9750baec64785753689815947689.png

    学习资源:《Excel VBA从入门到进阶》第57集 by兰色幻想


    本节讲述列表框和组合框。

    如下图所示,列表框,顾名思义,用于提供一组条目(数据项),用户可以用鼠标选择其中一个或者多个条目,但是不能直接编辑列表框的数据。而组合框是文字框+下拉菜单的组合形式,用户可以从下拉菜单选择条目。

    eb36748aed44430b1185ec80283949eb.png

    一、组合框的显示

    1. 显示多列内容

    rowsource属性:可以从工作表中导入数据 。

    Columnheads属性:显示列标题,只在引用工作表数据源时才有效,而且数据源不能包括标题行。

    ColumnCount属性:设置组合框可显示的列数。

    TextColumn属性:选取多列时显示第N列的内容。

    BoundColumn属性:指定返回第N列的值,作为窗体的数值。

    e7045bbe309d770481f5650737fc19f0.png
    工作表数据
    Private Sub CommandButton1_Click()
    '点击初始化数据
    
    商品.RowSource = "sheet3!A2:C5" '导入工作表数据(不用包含列标题)
    商品.ColumnCount = 3
    商品.ColumnHeads = True '显示列标题
    商品.TextColumn = 1 '组合框中显示第1列,即商品的名称
    商品.BoundColumn = 2 '选取后第2列为作为控件的默认值,即商品的数量
    
    End Sub
    
    Private Sub 商品_Change()
    '商品窗体数值变化
    If 商品.ListIndex <> -1 Then '组合框没选取时listindex会返回-1
        TextBox1 = 商品.Value 
         'TextBox1要显示商品数量,上面已经用BoundColumn把商品控件的默认值设定第2列的值
        TextBox2 = 商品.List(商品.ListIndex, 2) 
         'TextBox2要显示商品单价,List即数据源的数值,以第一列作为索引0,显示索引后第二个的值
    End If
    End Sub

    bb7ba5e4ec070dbce8967a6426e97e6b.gif

    2. 获得焦点自动打开下拉列表

    Private Sub 商品_Enter()
      商品.DropDown
    End Sub

    设置了这一段,点控件空白处就会显示下拉列表,没设置就只能点旁边的按钮。

    15fd83aaf15e9632de75909f40dc19d8.png

    3. 下拉列表显示最大行数

    ListRows属性设置,不含标题行。

    a6df40a2e2d45b87cf1824c35134a816.png

    4. 组合框下拉按钮的图标

    ShowDropButtonWhen 属性:可以设置是否显示下拉按钮图标。如果写了获得焦点自动打开下拉列表的代码,似乎不设置也行,但有图标会比较清晰。

    DropButtonStyle 属性:设置下拉按钮的类型。

    78c503f79b38feaf12f2ba81b005bd3c.png

    5. 设置列宽

    ColumnWidths属性:设置下拉列表的列宽,可以用三种单位:厘米、磅、英寸。

    用分号隔开,数值和单位之间要留一个空格。

    商品.ColumnWidths = "70 磅;60 磅;67 磅" '以磅为单位
    商品.ColumnWidths = "2 厘米;2 厘米;5 厘米" '以厘米为单位
    商品.ColumnWidths = "2 英寸;2 英寸;3 英寸" '以英寸为单位

    二、 组合框的功能

    1. 向组合框内添加内容

    有以下四种方法:

    ① 使用additem方法添加

    Private Sub UserForm_Initialize()
    商品.AddItem "A"
    商品.AddItem "B"
    商品.AddItem "C"
    End Sub

    e64e3714b669ca8562400e5113b70faa.png

    ② 使用常量数组添加

    Private Sub UserForm_Initialize()
    商品.List = Array("A", "B", "C")
    End Sub

    ③ 使用VBA数组添加

    Private Sub UserForm_Initialize()
    Dim arr(1 To 3), x
    For x = 1 To 3
       arr(x) = Cells(x + 1, "A")    '导入单元格A2,A3,A4的值,也就是ABC,见上面工作表截图。
    Next x
    商品.List = arr
    End Sub

    ④ 创建和单元格链接

    Private Sub UserForm_Initialize()
    商品.RowSource = "sheet3!A2:A4"
    End Sub

    2. 删除指定行RemoveItem

    Private Sub CommandButton3_Click()
    
    '删除指定行
    商品.RemoveItem 1 
    
    '删除选中的行ListIndex属返回选定的行数,不能删除rowsourse设置的填充数据
    商品.RemoveItem 商品.ListIndex
    End Sub

    3. 提取选取的多列内容

    List(行数,列数) 

    行和列都是从0开始算起的。

    4. 是否可以输入列表内容以外的内容

    MatchRequired 属性值为true时,必须输入组合框中含有的。如果为false,可以输入下拉列表中没有的数值。

    三、列表框的属性和方法

    大部分属性和组合框相同,所以就不赘述了,只说列表框独有的。

    1. ListStyle值为0时,样式为默认样式,无单选或多选框,如果为1时则有,0则无。

    36d787332b0d610b347ddea8985a5041.png
    默认样式

    903497d5a9ad4d853f86c99cf07e8a7a.png
    多选框

    2. Selected(行数) 可以判断列表框中某行是否被选取,可获取多个行数,是一个集合。

    Private Sub CommandButton1_Click() '显示选取的行
    Dim x As Integer
    For x = 0 To LB1.ListCount - 1
       'Selected是选取的集合
       If LB1.Selected(x) = True Then 
          'list(行,列)来表示在列表框中的位置 ,行与列都是从0开始
          MsgBox x & "  "&LB1.List(x, 0) 
       End If
     Next x
    End Sub

    a0da122e8123b8f1f7d384b251fc5838.png
    选取第一行“界面”,但它的行列从0开始,所以显示的是0。

    3. ListCount 属性:列表框的条目个数。(在上例也有使用到)

    4. MultiSelect 属性值为0 只能选一个,1可以用鼠标点击多选或取消,2 需要按Shift或Ctrl才能多选。

    2d7a9145e33f92c6b6dd86b5e51c00ad.png

    没想到这个专栏停更了这么久还有陆续的点赞和关注,不好意思再拖更了……还有23篇,今年内一定要把它给完结了(再次立flag,也欢迎大家催更)。

    展开全文
  • 学习资源:《Excel VBA从入门到进阶》第57集 by兰色幻想本节讲述列表框和组合框。如下图所示,列表框,顾名思义,用于提供一组条目(数据项),用户可以用鼠标选择其中一个或者多个条目,但是不能直接编辑列表框的...

    e8e5020222b19b04fc80b353b3519c2e.png

    学习资源:《Excel VBA从入门到进阶》第57集 by兰色幻想


    本节讲述列表框和组合框。

    如下图所示,列表框,顾名思义,用于提供一组条目(数据项),用户可以用鼠标选择其中一个或者多个条目,但是不能直接编辑列表框的数据。而组合框是文字框+下拉菜单的组合形式,用户可以从下拉菜单选择条目。

    fe145e0bb9c8b4ffea55cff09558d1f8.png

    一、组合框的显示

    1. 显示多列内容

    rowsource属性:可以从工作表中导入数据 。

    Columnheads属性:显示列标题,只在引用工作表数据源时才有效,而且数据源不能包括标题行。

    ColumnCount属性:设置组合框可显示的列数。

    TextColumn属性:选取多列时显示第N列的内容。

    BoundColumn属性:指定返回第N列的值,作为窗体的数值。

    ace179eb66c26c51605d5c0e39f8bf3d.png
    工作表数据
    Private Sub CommandButton1_Click()
    '点击初始化数据
    
    商品.RowSource = "sheet3!A2:C5" '导入工作表数据(不用包含列标题)
    商品.ColumnCount = 3
    商品.ColumnHeads = True '显示列标题
    商品.TextColumn = 1 '组合框中显示第1列,即商品的名称
    商品.BoundColumn = 2 '选取后第2列为作为控件的默认值,即商品的数量
    
    End Sub
    
    Private Sub 商品_Change()
    '商品窗体数值变化
    If 商品.ListIndex <> -1 Then '组合框没选取时listindex会返回-1
        TextBox1 = 商品.Value 
         'TextBox1要显示商品数量,上面已经用BoundColumn把商品控件的默认值设定第2列的值
        TextBox2 = 商品.List(商品.ListIndex, 2) 
         'TextBox2要显示商品单价,List即数据源的数值,以第一列作为索引0,显示索引后第二个的值
    End If
    End Sub

    0503ea548c5774049a5763cacad3910d.gif

    2. 获得焦点自动打开下拉列表

    Private Sub 商品_Enter()
      商品.DropDown
    End Sub

    设置了这一段,点控件空白处就会显示下拉列表,没设置就只能点旁边的按钮。

    b179b032f915f82ac046c82a4c2f3e0f.png

    3. 下拉列表显示最大行数

    ListRows属性设置,不含标题行。

    ad4d58248c88ea47aa4608d7a9e2186a.png

    4. 组合框下拉按钮的图标

    ShowDropButtonWhen 属性:可以设置是否显示下拉按钮图标。如果写了获得焦点自动打开下拉列表的代码,似乎不设置也行,但有图标会比较清晰。

    DropButtonStyle 属性:设置下拉按钮的类型。

    e984072a25e2d6d1d1567bda1b2e9662.png

    5. 设置列宽

    ColumnWidths属性:设置下拉列表的列宽,可以用三种单位:厘米、磅、英寸。

    用分号隔开,数值和单位之间要留一个空格。

    商品.ColumnWidths = "70 磅;60 磅;67 磅" '以磅为单位
    商品.ColumnWidths = "2 厘米;2 厘米;5 厘米" '以厘米为单位
    商品.ColumnWidths = "2 英寸;2 英寸;3 英寸" '以英寸为单位

    二、 组合框的功能

    1. 向组合框内添加内容

    有以下四种方法:

    ① 使用additem方法添加

    Private Sub UserForm_Initialize()
    商品.AddItem "A"
    商品.AddItem "B"
    商品.AddItem "C"
    End Sub

    7f697727b89c4c96ed0ecf09c46ed523.png

    ② 使用常量数组添加

    Private Sub UserForm_Initialize()
    商品.List = Array("A", "B", "C")
    End Sub

    ③ 使用VBA数组添加

    Private Sub UserForm_Initialize()
    Dim arr(1 To 3), x
    For x = 1 To 3
       arr(x) = Cells(x + 1, "A")    '导入单元格A2,A3,A4的值,也就是ABC,见上面工作表截图。
    Next x
    商品.List = arr
    End Sub

    ④ 创建和单元格链接

    Private Sub UserForm_Initialize()
    商品.RowSource = "sheet3!A2:A4"
    End Sub

    2. 删除指定行RemoveItem

    Private Sub CommandButton3_Click()
    
    '删除指定行
    商品.RemoveItem 1 
    
    '删除选中的行ListIndex属返回选定的行数,不能删除rowsourse设置的填充数据
    商品.RemoveItem 商品.ListIndex
    End Sub

    3. 提取选取的多列内容

    List(行数,列数) 

    行和列都是从0开始算起的。

    4. 是否可以输入列表内容以外的内容

    MatchRequired 属性值为true时,必须输入组合框中含有的。如果为false,可以输入下拉列表中没有的数值。

    三、列表框的属性和方法

    大部分属性和组合框相同,所以就不赘述了,只说列表框独有的。

    1. ListStyle值为0时,样式为默认样式,无单选或多选框,如果为1时则有,0则无。

    60a35a9ab60070931f555f4bbf836eaf.png
    默认样式

    c8ff57b18302625591347b0fb2557e35.png
    多选框

    2. Selected(行数) 可以判断列表框中某行是否被选取,可获取多个行数,是一个集合。

    Private Sub CommandButton1_Click() '显示选取的行
    Dim x As Integer
    For x = 0 To LB1.ListCount - 1
       'Selected是选取的集合
       If LB1.Selected(x) = True Then 
          'list(行,列)来表示在列表框中的位置 ,行与列都是从0开始
          MsgBox x & "  "&LB1.List(x, 0) 
       End If
     Next x
    End Sub

    cb5cdcb35b4cdd06830dbb64e5d7b4c8.png
    选取第一行“界面”,但它的行列从0开始,所以显示的是0。

    3. ListCount 属性:列表框的条目个数。(在上例也有使用到)

    4. MultiSelect 属性值为0 只能选一个,1可以用鼠标点击多选或取消,2 需要按Shift或Ctrl才能多选。

    76003df0069775dcfa8e58a1b2aa8460.png

    没想到这个专栏停更了这么久还有陆续的点赞和关注,不好意思再拖更了……还有23篇,今年内一定要把它给完结了(再次立flag,也欢迎大家催更)。

    展开全文
  • Excel VBA ListBox列表框添加和删除问题

    万次阅读 2008-04-04 23:30:00
    Excel VBA 窗体中有两个ListBox,需要做的操作:从一个列表框中选择列表值向另一个列表添加值,以及从已选择的值中删除选择的列表值。 例:ListBox列表 被选框lbData, 选择框lbSelectedData,列表框中显示三列。-...

            Excel VBA 窗体中有两个ListBox,需要做的操作:从一个列表框中选择列表值向另一个列表添加值,以及从已选择的值中删除选择的列表值。

            例:ListBox列表 被选框lbData, 选择框lbSelectedData,列表框中显示三列。

    '-------------------------------------------------------------------------
    '将选中的备选科目加入到已选科目中
    '内部变量说明:
    'x 代表要循环的lbData行
    'j 代表要向lbSelectedData插入的行
    'i 代表lbSelect和lbData要操作的列
    '程序设计思路:
    '获取lbSelectedData已有行数量赋值于j,要添加的行数为该值(因为行数从0开始)
    '循环检查lbData中选中的行
    '在lbSelectedData中添加空行,行号为j
    '将选中的记录从0列开始将每一列赋值到新行中
    '添加新记录完成后,lbSelectedData可添加行行号加1
    '
    '操作完毕清空lbData框中的已选中的列,以免误操作再次被新增
    '--------------------------------------------------------------------------
    Private Sub SelectListItem(isAll As Boolean)
        Dim j As Integer
       
        '获取可新增行的行号
        j = lbSelectedData.ListCount
       
        '向已选科目列表中添加选择的列
        '循环lbData每一行数据
        For x = 0 To lbData.ListCount - 1
           
            '判断是否为全部新增(True),还是部分新增(False)
            If (isAll) Then
           
                 '在lbSelectedData中添加新行,行号为获取的可新增行行号
                 lbSelectedData.AddItem , j
                
                '根据lbSelectedData中的列号,循环向新行中添加列值
                For i = 0 To lbData.ColumnCount - 1
                    lbSelectedData.List(j, i) = lbData.List(x, i)
                Next i
                  
                '可新增行行号加1
                j = j + 1

            Else
               
                '如果记录被选中进行新增操作
                If lbData.Selected(x) = True Then
                               
                    '在lbSelectedData中添加新行,行号为获取的可新增行行号
                    lbSelectedData.AddItem , j
                      
                    '根据lbSelectedData中的列号,循环向新行中添加列值
                    For i = 0 To lbData.ColumnCount - 1
                        lbSelectedData.List(j, i) = lbData.List(x, i)
                    Next i
                      
                    '可新增行行号加1
                    j = j + 1

                End If
            End If
          
        Next x

        '清除备选表中的已选列
        For y = 0 To lbData.ListCount - 1
            lbData.Selected(y) = False
        Next
    End Sub

    如果要选择备选全部列表值,可以将上述代码中“If lbData.Selected(x) = True Then”的条件判断去掉即可。

    展开全文
  • VBA列表框(ComboBox或ListBox)中填加数据向列表框中填加数据的方法很多,下面根据实例介绍3种最常用到的方法:图1图2如图1所示的下拉列表框(组合框),图2为其数据源,图2所有在工作表表名为:设置表无论哪种...
  • 给组合框或列表框添加元素一、RowSource属性添加元素二、为工作表中的ActiveX控件中的列表框添加元素三、使用list属性添加元素四、使用additem方法添加列表项五、列表框的其他属性 一、RowSource属性添加元素 ...
  • 如下图所示,当我们在百度搜索中搜索关键字时,百度搜索会自动列出含有关键字的搜索历史供下拉选择。类似地,在excel中,也经常遇到类似的需求。希望在excel单元格中输入关键字后列出所有含有该关键字的相关列表...
  • 学习Excel技术,关注微信公众号:...本文利用记录集技巧,创建级联列表框。示例效果如下图1所示。图1正如上图1所演示的,创建的一组列表框-Region,Market和State可以联动工作。也就是说,如果选择列表框Re...
  • 在自学应用10我们已经讲过了如何给列表框添加元素,今天我们就来看看如何移动列表框的元素并且数据源的位置也随之变动。 首先我们用listbox的list属性添加元素,这里自学应用10已经提过,不再做赘述 如图是我的窗体...
  • 一、允许多项选择 代码如下 Private Sub UserForm_Initialize() arr = Sheets("产品表").Range("a1").CurrentRegion ... '设置列表框属性 .List = arr .MultiSelect = fmMultiSelectExtended ...
  • 累积量 (m3) 500 ------- ------------------------------------------ 现在我已经编写了使用AddItem在列表框中显示数据的代码,但整行显示在列表框中的一行中。我想只显示深度范围和体积数据,从''0.000>开始。 0....
  • 相关知识点 Multiline:文本框多行输入,设置为True,手动换行是...ListBox:列表框 Listbox.RowSource=”sheet1!D1:”D66”:列表框的条目,不可以与List属性同时使用 Initialize:窗体初始化时 AddItem:列表...
  • 今天我们来介绍下ActiveX控件中的前两个控件,命令按钮,组合。一、命令按钮命令按钮,CommandButton,常用于点击后能实现某一功能,例如我们常见的保存按钮。下面介绍下命令按钮常用的几个属性:camption属性,...
  • 前面的几篇图文,咱们讲了关于VBA二次开发的一些控件,这次咱们继续说...往本质上说,combobox应该两个的文本框与下拉列表框的组合.因为复合框也确实具备了两者的功能.一是通过复合框来录入数据,同时又可以通过下拉列表...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 208
精华内容 83
关键字:

vba列表框