深圳office培训 深圳excel培训
深圳excel培训 深圳office培训
咨询服务
深圳office培训
深圳office培训
office培训
excel培训
ppt培训
vba培训
access培训
word培训
visio培训
project培训
outlook培训
数据库培训
深圳access培训
深圳sql培训
深圳office培训
 

多列组合框和列表框的设置


2016年8月11日 作者: 来源:

如果组合框和列表框是多列的话,还需要设置控件的其他属性,如下面的代码所示。
#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 属性值的方法,设置值如下所示:
值         说明
0         将 ListIndex 属性的值赋予控件。
1 或者大于 1 将指定列中的值赋予控件。当采用此属性时,列从 1 开始计数(默认值)。

当选择了多列列表框的一行时,BoundColumn 属性标识出将该行的哪一条目作为控件的值存储。BoundColumn属性设为 0,将所选行的行号赋予控件,作为控件的值。如果BoundColumn属性设为1 或者大于 1,则将指定列中的值赋予控件。
第10行代码,设置多列列表框中列表的来源。在设置列表来源可以使用Column属性指定列表框中的一个或多个条目,Column属性语法如下:
object.Column( column, row ) [= Variant]
参数object是必需的,一个有效对象。
参数column是可选的,取值范围为0到总列数减1之间的数值。
参数row是可选的,取值范围为0到总行数减1之间的数值。
参数Variant是可选的,指定欲加载到列表框的一个值、一列值或一个二维数组。
注意   当从一个二维数组中复制数据时,使用Column属性将转置控件中数组的内容,所以在加载时需使用Transpose函数对数组进行转置。

在把多列列表框的写入工作表中时,只能把BoundColumn属性所指定列中的值写入工作表中,不能把选中的整行内容写入到工作表中。如果需要把多列列表框中选中行的整行内容写入工作表中,可以使用循环语句将列表框各列的写入工作表,如下面的代码所示。
#001  Private Sub UserForm_Initialize()
#002      Dim iRow As Integer
#003      iRow = Sheet2.Range("A65536").End(xlUp).Row
#004      With Me.ListBox1
#005          .ColumnCount = 7
#006          .ColumnWidths = "45,45,45,45,45,30,45"
#007          .BoundColumn = 1
#008          .ColumnHeads = True
#009          .RowSource = Sheet2.Range("A2:G" & iRow).Address(External:=True)
#010      End With
#011  End Sub
#012  Private Sub ListBox1_Click()
#013      Dim iRow As Integer
#014      Dim i As Byte
#015      iRow = Sheet1.Range("A65536").End(xlUp).Row + 1
#016      For i = 1 To ListBox1.ColumnCount
#017          Sheet1.Cells(iRow, i) = ListBox1.Column(i - 1)
#018      Next
#019  End Sub
代码解析:
第1行到第11行代码窗体的Initialize事件过程,在窗体初始化时为多列列表框添加列表项。
第8行代码,设置多列列表框中的第一行为列标题行。ColumnHeads 属性显示列表框、组合框及接受列题注的对象中的列标题行,语法如下:
object.ColumnHeads [= Boolean]
参数object是必需的,一个有效的对象。
参数Boolean是可选的,指定是否显示列标题。
将ColumnHeads 属性设置为True,多列列表框的第一行显示为列标题,默认值为False,不显示列标题。
需要注意的是,当数据项中的第一行作为列标题时,则不可选中该行。
第9行代码,使用RowSource属性设置多列列表框中列表的来源。
注意 如果已将多列列表框中列表项来源的第一行设置为列标题,在设置RowSource属性时应从列表项来源的第二行开始设置。
第12行到第19行代码列表框的Click事件,单击多列列表框时把选中行的整行内容写入工作表中。其中第17行代码,使用循环语句将多列列表框选中行的各列的值写入工作表对应的单元格中。在本例中没有指定row参数,所以是把当前选中行的内容写入工作表。
运行窗体后,单击列表框将选中的整行内容写入工作表中。


阅读:1871 上一则:如何在vba显示GIF动画图片 下一则:vba如何在输入时逐步提示信息

返回前页 返回顶部
温馨提示:本中心是深圳较为专业office培训机构、咨询及报名请先预约,电话:0755-82124110。
深圳地址:深圳红荔路四川大厦1109B-1110(3号龙岗线通新岭地铁站A出口10米)
热线:0755-82124110(福田、南山、宝安) 0755-22205758(罗湖、龙岗、龙华) 13510024571(东莞、惠州、珠海、广州)
北京地址:北京清华大学华业大厦三区三楼 版权所有:深圳万博计算机教育 粤ICP备11006947号-1
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训 欢迎咨询!
您好!请点击这里咨询万博教育
深圳万博吴老师
您好!请点击这里咨询万博教育
深圳万博史老师
 
深圳信息系统项目管理师培训
深圳信息系统项目管理师培训