我在启用宏的Excel文件中有一个简单的用户表单,表单中有一个组合框(下拉框)。我想在Excel工作表中使用特定的标题值(位于第一行)填充组合框选项。在我的例子中,我有一百多个列,我只需要其中几个包含“价格”值的列。下面是我的VBA代码时,用户窗体初始化:
Private Sub UserForm_Initialize()
Dim header_arr() As Variant
Dim filtered_arr() As Variant
Dim ws As Worksheet
Set ws = ThisWorkbook.ActiveSheet
header_arr = ws.Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Value2
filtered_arr = Filter(header_arr, "price") 'I am getting an error here.
For Each item In filtered_arr
Me.ComboBox1.AddItem (item)
Next
End Sub
代码注解:
header_arr是工作表中第一行的数组。
filtered_arr是我的工作表中包含“price”值的第一行的数组。
但是当我运行代码时,我得到运行时错误13(类型missmatch)。任何帮助将不胜感激。
2条答案
按热度按时间46scxncf1#
使用行填充组合框
zazmityj2#
正如@VBasic2008所指出的,Filter()需要一个一维数组。因此,您可以通过转置两次将header_arr转换为一维数组。然后,一旦筛选了数组,就可以简单地使用组合框的List属性来分配筛选后的数组。
请注意以下内容。。
1.已指定目标工作表,请相应地更改名称。
这是密码...