excel - 如何在 Excel VBA 中使用 Find 函数修复错误

标签 excel vba

我试图从另一张表中搜索一个值,而不是使用 .FIND 函数

Private Function Search(rng As Range, FindString As String) As Range
    With rng
        Set Search = .Find(what:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        lookat:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
     End With

有趣的是,如果我进入
Search(Range("'DataSheet'!A1:Z1000"),"STARTING") 

有用。当我尝试
 SearchString = "'" & Selected_sheet &"'!A1:Z1000"

它不起作用 Selected_sheet 只是工作表的名称(在这种情况下,它是“DataSheet”)。使用
Search(Range(SearchString ),"STARTING") 

Error: RUN-TIME ERROR '91'
Object variable or With Block Varibale Not Set

实际问题可能是什么?

最佳答案

你的方法没有错,但我建议不要像那样通过你的范围。

用这个

Search(Sheets("DataSheet").Range("A1:Z1000"),"STARTING")

或者
Selected_sheet = "DataSheet"
Search(Sheets(Selected_sheet).Range("A1:Z1000"),"STARTING")

顺便说一句,Range(SearchString) 没有任何问题在你的代码中。它应该工作。你怎么调用 Search ?希望是这样的?
Dim Ret As Range '<~~~

Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")

原因 : 函数返回 Range所以你不能在没有 Set Ret = ... 的情况下直接调用它在哪里 Ret再次声明为 Range .

编辑

如果您的 Search 也会出现该错误。函数不返回范围,您尝试使用 Ret .请参阅此示例。
Dim Ret As Range

Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")

'<~~ This will give you RUN-TIME ERROR '91' if "STARTING" is not found
Debug.Print Ret.Address

那么我们如何解决这个问题

尝试这个
Dim Ret As Range

Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")

If Not Ret Is Nothing Then
    Debug.Print Ret.Address
Else
    Debug.Print "Search Didn't return any results"
End If

关于excel - 如何在 Excel VBA 中使用 Find 函数修复错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16092433/

相关文章:

excel - 将 Qlikview 十六进制日期转换为普通日期

excel - 图表对象的粘贴方法在 Excel 2016 中未按预期工作

vba - 仅从可见单元格中检索行号列表

vba - VBA调用模块-如果模块失败,则中止过程

vba - 无法在 VBA (Excel) 中迭代哈希表

excel - 如何删除Excel中不满足包含的行?

vba - 在单元格内进行拼写检查并将拼写错误的单词的颜色更改为红色

excel - 引用外部表时强制 Excel 保留工作表名称

php - 尝试结合两个 Codeigniter 脚本,将数据从 mysql 导出到 excel

excel - 使用数组中的变量(ctrl + shift + enter)公式VBA