vba combobox添加下拉内容

vba combobox添加下拉内容,第1张

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

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


vba combobox添加下拉内容,eb36748aed44430b1185ec80283949eb.png,第2张

一、组合框的显示

显示多列内容

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

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

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

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

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


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

vba combobox添加下拉内容,bb7ba5e4ec070dbce8967a6426e97e6b.gif,第3张

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

Private Sub 商品_Enter() 商品.DropDownEnd Sub

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


vba combobox添加下拉内容,a6df40a2e2d45b87cf1824c35134a816.png,第4张

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

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

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


vba combobox添加下拉内容,78c503f79b38feaf12f2ba81b005bd3c.png,第5张

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

vba combobox添加下拉内容,e64e3714b669ca8562400e5113b70faa.png,第6张

② 使用常量数组添加

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

③ 使用VBA数组添加

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

④ 创建和单元格链接

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

2. 删除指定行RemoveItem

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

3. 提取选取的多列内容

List(行数,列数) 

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

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

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

三、列表框的属性和方法

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

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


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

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

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


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


本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » vba combobox添加下拉内容

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情