我需要帮助弄清楚我做错了什么。让我成为业余爱好者。
我有两本工作簿,工作簿A和工作簿B.在工作簿A中,我在单元格a1和工作簿B中有一个值,我可以说10页,其中包含A和B列中的值。
我希望通过循环遍历工作簿B中的所有工作表来匹配工作簿A中a1的值,然后返回地址(如果找到它的位置)。然后我写一个if语句,如果发现该值停止循环,因为我稍后会搜索另一个单元格,虽然我卡住了所以我还没有编写那行代码。
这是代码和我注意到的卡片。
sub autocheck()
dim found as varient
dim I as integer
dim val as varient
set val=workbooks("A").worksheets("primary").range("a1").value
For I = 1 to 10
on error resume next
set found=workbooks("b").worksheets(i).range("a:b").match(val)
found= found.address
if isempty(found) then
next i
else
exit for
end if
end sub
我在这里得到一个错误,说不能有下一个没有。
我知道如何解决这些问题吗?我为格式化道歉。
谢谢大家!
答案 0 :(得分:1)
问题是if语句跨越循环。您应该使用if语句退出循环并将其保存在for
中"
答案 1 :(得分:1)
您的代码应该“尖叫”几次:
dim val as variant
?也许是Variant
。match
,您的语法更接近Find
。使用Find
还应包含无法找到结果的方案Find
。无论如何,您需要将Set
函数结果Find
发送到Range
对象。Next I
应该在End If
之后,而不是在中间。on error resume next
不会让你的错误消失,你只是“闭上眼睛”希望它会消失。修改后的代码
Option Explicit
Sub autocheck()
Dim found As Range
Dim foundAdress As String
Dim i As Long
Dim val As Variant
Set val = Workbooks("A").Worksheets("primary").Range("a1").Value
For i = 1 To 10
Set found = Workbooks("b").Worksheets(i).Range("A:B").Find(what:=val)
If Not found Is Nothing Then ' Find was successfull
foundAdress = found.Address
Exit For
Else ' Find failed
' in your code do nothing, continue looping
End If
Next i
End Sub