在另一个工作簿中查找单元格地址及其值:"Run time error '9' Subscript out of range"



我正在使用一个包含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 

最新更新