我正在使用一个包含listBox的用户表单,我试图在另一个工作簿中查找列表项,以便找到它们的单元格地址。
我的代码如下:With Me.listbox
For i=0 To listbox.ListCount -1
colNum = WorksheetFunction.Match(listbox.List(i), Workbooks("c:sourceFile").Worksheets(1).Range("1:1"), 0)
MsgBox "Column :" & colNum
Next i
End With
弹出一个错误信息告诉我"运行时间错误'9'下标超出范围"。
我可以看到您可能面临以下问题:
1)使用Application。匹配而不是WorksheetFunction,后者不是UserForm Object的成员
2)我怀疑listBox成员的名字不是listBox,很可能是ListBox1左右
3)
作业本("c: 源文件")
. .这是否引用了打开的工作簿?如果是这样,您应该使用它的名称(带扩展名)来获取它,但不使用路径。
With Me.ListBox1
For i=0 To .ListCount -1
colNum = Application.Match(.List(i), Workbooks("sourceFile.xlsx").Worksheets(1).Range("1:1"), 0)
MsgBox "Column :" & colNum
Next i
End With
最后,您的代码可以通过获得一次搜索的范围来更好地优化,而不是在循环中:
set r = Workbooks("sourceFile.xlsx").Worksheets(1).Range("1:1")
With Me.ListBox1
For i=0 To .ListCount -1
colNum = Application.Match(.List(i), r, 0)
MsgBox "Column :" & colNum
Next i
End With