【发布时间】:2018-01-16 04:18:44
【问题描述】:
问题:我需要在已关闭的工作簿中搜索特定值,然后返回匹配字符串的行号,或者更优选地返回具有匹配字符串行号的值。 p>
我正在尝试让它与ExecuteExcel4Macro 函数一起使用,我的代码可以在下面找到。
Private Function GetInfoFromClosedFile2(ByVal wbPath As String, ByVal wbName As String, ByVal wsName As String, ByVal colNum As Integer, ByVal searchString As String) As Variant
Dim arg As String
GetInfoFromClosedFile2 = vbNullString
If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
If Dir(wbPath & wbName) = vbNullString Then Exit Function
arg = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Worksheets(wsName).Columns(colNum).Find(What:=searchString).Address(True, True, xlR1C1)
'On Error Resume Next
GetInfoFromClosedFile2 = ExecuteExcel4Macro(arg)
End Function
arg = 行出现运行时错误“9”
【问题讨论】:
-
如果未找到搜索字符串,
Find方法将返回Nothing,尽管我预计这会导致 Object Required 错误。 -
除非运行时 ActiveWOrkbook 中有工作表
wsName,否则此代码将引发 9 Subscript out of Range 错误。 -
我的活动工作簿中的工作表名称与
wsName不同。甚至可以将Find函数与ExecuteExcel4Macro一起使用吗? -
不,不可能做你想做的事,我认为这是要求
ExecuteExcel4Macro评估关闭工作簿上的 range.Find方法。 -
我认为这可能是问题所在,也许我可以使用
MATCH函数而不是.Find?