朋友们,美好的一天!在过去的一周里,我一直在尝试各种可以想象的方式来解决我遇到的问题。这是我的代码:
Sub LoopTest()
Dim Current As Worksheet
Dim range3 As Range
Workbooks("Book2.xlsm").Activate
For Each Current In ActiveWorkbook.Worksheets
Set range3 = Cells.Find(What:="AAIDL00", After:=Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not range3 Is Nothing Then
Debug.Print range3.Value
Exit For
Else: Debug.Print "Search term not found!"
End If
Next
End Sub
我正在寻找" AAIDL00"在8张测试工作簿中。该字符串位于sheet8单元格R22上。当我手动选择(单击)工作簿上的sheet8时,脚本工作。但是,当我选择任何其他工作表时,脚本会返回"搜索字词未找到!"。
有人可以帮帮我吗?我一直在论坛上,看起来代码或多或少"标准"在结构上。我不明白为什么我会收到这个错误。有些东西告诉我这是我的电脑或甚至excel安装的全局设置问题。不确定。任何想法都表示赞赏!
答案 0 :(得分:1)
使用一个或多个With ... End With块来提供确定的父工作表和工作簿引用。
Temperature
请注意工作表,单元格和范围上的Sub LoopTest()
Dim w As Long, range3 As Range
With Workbooks("Book2.xlsm")
For w = 1 To .Worksheets.Count
With .Worksheets(w)
Set range3 = .Cells.Find(What:="AAIDL00", After:=.Range("A1"), LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
If Not range3 Is Nothing Then
Debug.Print range3.Value
Exit For
Else
Debug.Print "Search term not found in " & .Name
End If
End With
Next w
End With
End Sub
前缀。这提供了前一个With ... End With块的父母。