【发布时间】:2013-08-05 23:28:27
【问题描述】:
我正在关闭的 Excel 工作簿的列中搜索字符串。
以下代码在 MsgBox 上给出类型不匹配错误。
如果我用ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("C3015").Address(True, True, -4150) 替换该行,那么宏会给我一个硬编码的值(在本例中为单元格 C3015 处的值)。
如何在关闭的工作簿的列中搜索其他值,而不打开它们?
Dim wbName As String, wbPath As String, wsName As String
wbPath = "Path\To\Workbook\"
wbName = "NameOfWorkbook.xlsb"
wsName = "NameOfWorkSheet"
Dim ret As String
ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("D:D").Find(What:="SearchColumnDForThisString")
MsgBox ExecuteExcel4Macro(ret) // <--------- TYPE MISMATCH ERROR
【问题讨论】:
-
Range.Find() 返回一个 Range(不是字符串),试试 Range.Find().Address。
-
谢谢,现在我没有收到错误,但计算不正确。它一直在寻找错误的值
-
Address() 方法有什么作用?我可以摆脱它吗?
-
您不能使用该方法在已关闭的工作簿中搜索字符串。为什么不打开工作簿直接使用
Find()? -
关闭 ScreenUpdating,打开工作簿,进行搜索,关闭工作簿,打开 ScreenUpdating。
标签: excel vba macos worksheet-function