多列组合框和列表框的设置
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
技巧1 多列组合框和列表框的设置
1-1 多列组合框和列表框添加列表项
如果组合框和列表框是多列的话,除了使用错误!未找到引用源。的方法外,还需要设置控件的其他属性,如下面的代码所示。
#001 Private Sub UserForm_Initialize()
#002 Dim iRow As Integer
#003 Dim Arr As Variant
#004 iRow = Sheet1.Range("A65536").End(xlUp).Row
#005 Arr = Sheet1.Range("A1:G" & iRow)
#006 With Me.ListBox1
#007 .ColumnCount = 7
#008 .ColumnWidths = "45,45,45,45,45,30,45"
#009 .BoundColumn = 1
#010 .Column = Application.WorksheetFunction.Transpose(Arr)
#011 End With
#012 End Sub
代码解析:
在窗体初始化时为多列列表框添加列表项。
第4行代码,设置列表框显示的列数。ColumnCount 属性指定列表框或组合框的显示列数,语法如下:
object.ColumnCount [= Long]
参数object是必需的,一个有效的对象。
参数Long是可选的,指定需显示的列数。
如果将ColumnCount设为-1,将显示所有列。
第8行代码,设置列表框各列的宽度。ColumnWidths 属性指定多列的组合框或列表框中的各列的宽度,语法如下:
object.ColumnWidths [= String]
参数object是必需的,一个有效的对象。
参数String是可选的,以磅为单位设置列的宽度。
如将ColumnWidths 属性设为-1 或空,则将控件宽度等分,给予列表中的各列。设为0 则隐藏该列,大于0 的数值则是该列的精确宽度值。若要指定另一种不同的度量单位,设置时必须包括该度量单位。
第9行代码,设置多列列表框中的第一列为数据的来源。BoundColumn 属性标识多列组合框或列表框中的数据的来源,语法如下:
object.BoundColumn [= Variant]
参数object是必需的,一个有效的对象。
参数Variant是可选的,标识选择BoundColumn 属性值的方法,设置值如表格1-1所示:
表格1-1 Variant 的设置值
当选择了多列列表框的一行时,BoundColumn 属性标识出将该行的哪一条目作为控件的值存储。BoundColumn属性设为0,将所选行的行号赋予控件,作为控件的值。如果BoundColumn属性设为1 或者大于1,则将指定列中的值赋予控件。
第10行代码,设置多列列表框中列表的来源。在设置列表来源时除了可以使用错误!未找到引用源。所介绍的方法外,还可以使用Column属性指定列表框中的一个或多个条目,Column属性语法如下:
object.Column( column, row ) [= Variant]
参数object是必需的,一个有效对象。
参数column是可选的,取值范围为0到总列数减1之间的数值。
参数row是可选的,取值范围为0到总行数减1之间的数值。
参数Variant是可选的,指定欲加载到列表框的一个值、一列值或一个二维数组。
注意当从一个二维数组中复制数据时,使用Column属性将转置控件中数组的内容,所以在加载时需使用Transpose函数对数组进行转置。
多列列表框设置完成后效果如图1-1所示。
图1-1 多列列表框