组合框和列表框添加列表项的方法
2016年8月10日
作者: 来源:
组合框和列表框是Excel中最常用的控件,可以用来显示工作表中的数据。为组合框和列表框添加列表项的方法有多种,下面以列表框为例演示添加列表项的方法。 12-1 使用RowSource属性添加列表项 使用RowSource属性将列表框直接与工作表上的一个单元格区域相链接,如下面的代码所示。 #001 Private Sub UserForm_Initialize() #002 Dim iRow As Integer #003 iRow = Sheet1.Range("A65536").End(xlUp).Row #004 Me.ListBox1.RowSource = "sheet1!a1:a" & iRow #005 End Sub 代码解析: 在窗体初始化时使用RowSource属性为列表框添加列表项。 RowSource属性的语法如下: object.RowSource [= String] 参数object是必需的,一个有效的对象。 参数String是可选的,组合框或列表框列表的来源。 RowSource属性也可以使用单元格地址,第4行代码可以改成下面的代码: Me.ListBox1.RowSource = Sheet1.Range("A1:A" & iRow).Address(External:=True) 需要注意的是,如果RowSource属性指定的工作表区域不是活动工作表的话,Address属性的External参数是不可缺的,设置为True表示是外部引用,如果缺省此参数或为False,将不能为列表框添加列表项。 RowSource属性还可以使用命名的单元格区域,如果已把工作表区域命名为“城市”,第4行代码可以改成下面的代码: Me.ListBox1.RowSource = "城市" 对于工作表中的列表框控件或使用窗体添加的列表框控件不能使用RowSource属性,需要使用ListFillRange属性指定填充列表框的工作表区域,如下面的代码所示。 #001 Sub ListFillRange() #002 Dim iRow As Integer #003 iRow = Sheet1.Range("A65536").End(xlUp).Row #004 Sheet2.ListBox1.ListFillRange = "Sheet1!a1:a" & iRow #005 Sheet2.Shapes("列表框").ControlFormat.ListFillRange = "Sheet1!a1:a" & iRow #006 End Sub 代码解析: ListFillRange过程为工作表中的列表框的填充区域,ListFillRange属性用于指定填充列表框的工作表区域。 第4行代码对于使用窗体添加的列表框控件需要使用ControlFormat属性来返回窗体控件以后才能设置其ListFillRange属性。 12-2 使用List属性添加列表项 使用List属性为列表框添加列表项,如下面的代码所示。 #001 Private Sub UserForm_Initialize() #002 Dim Arr As Variant #003 Dim iRow As Integer #004 iRow = Sheet1.Range("A65536").End(xlUp).Row #005 Arr = Sheet1.Range("A1:A" & iRow) #006 Me.ListBox1.List = Arr #007 End Sub 代码解析: 在窗体初始化时使用List属性为列表框添加列表项。 List属性的语法如下: object.List( row, column ) [= Variant] 参数object是必需的,一个有效对象。 参数row是必需的,取值范围为 0 到列表条目数减 1 之间的数值。 参数column是必需的,取值范围为 0 到总列数减 1 之间的数值。 参数Variant是可选的,列表框中指定条目的内容。 第6行代码,使用List属性把数组复制到列表框控件上。 除了使用数组外,List属性还可以使用命名的单元格区域,如果已把工作表区域命名为“城市”,可以改成下面的代码: #001 Private Sub UserForm_Initialize() #002 Me.ComboBox1.List = Range("城市").Value #003 End Sub 对于工作表中使用窗体添加的列表框控件使用List属性添加列表项,如下面的代码所示。 #001 Sub List() #002 Dim Arr As Variant #003 Dim iRow As Integer #004 Dim myObj As Object #005 iRow = Sheet1.Range("A65536").End(xlUp).Row #006 Arr = Sheet1.Range("A1:A" & iRow) #007 Set myObj = Sheet2.Shapes("列表框").ControlFormat #008 myObj.List = Arr #009 End Sub 代码解析: List过程设置列表框的List性,用于指定填充列表框的工作表区域。 12-3 使用AddItem方法添加列表项 使用AddItem方法添加列表项,对于单列的列表框,在列表中添加一项。对于多列的列表框,在列表中添加一行,如下面的代码所示。 #001 Private Sub UserForm_Initialize() #002 Dim iRow As Integer #003 Dim i As Integer #004 iRow = Sheet1.Range("A65536").End(xlUp).Row #005 For i = 1 To iRow #006 Me.ListBox1.AddItem (Sheet1.Cells(i, 1)) #007 Next #008 End Sub 代码解析: 在窗体初始化时使用AddItem方法为列表框添加列表项。 AddItem方法的语法如下: object.AddItem [ item [, varIndex]] 参数object是必需的,一个有效的对象。 参数item是可选的,指定要添加的项或行。第一个项或行的编号为 0;第二个项或行的编号为 1,依此类推。 参数varIndex是可选的,指定新的项或行在对象中的位置。 如果提供一个有效的varIndex的值,AddItem方法就把项或行放在列表中的那个位置。如果忽略 varIndex,此方法就把项或行添加在列表的末尾。对于多列列表框或者组合框,AddItem 方法插入一个完整的行,为控件的每一列都插入一项。为了给第一列后面的项赋值,可用List或Column属性来规定项的行和列。 对于工作表中使用窗体添加的列表框控件使用AddItem方法添加列表项,如下面的代码所示。 #001 Sub AddItem() #002 Dim iRow As Integer #003 Dim i As Integer #004 iRow = Sheet1.Range("A65536").End(xlUp).Row #005 With Sheet2.Shapes("列表框").ControlFormat #006 .RemoveAllItems #007 For i = 1 To iRow #008 .AddItem Sheet1.Cells(i, 1) #009 Next #010 End With #011 End Sub 代码解析: AddItem过程设置使用AddItem方法添加为工作表中使用窗体控件添加的列表框添加列表项。 其中第5行代码使用ControlFormat属性来返回窗体控件,第6行代码使用RemoveAllItems方法删除窗体控件中的列表框的所有数据项,如果控件是ActiveX 列表框则需要使用Clear方法。
阅读:2098
上一则:在窗体中高亮显示按钮
下一则:去除列表框数据源的重复值和空格
|