vba函数,用于将某个值从一个工作簿复制到另一个工作簿

vba函数,用于将某个值从一个工作簿复制到另一个工作簿,vba,loops,for-loop,Vba,Loops,For Loop,我有两本作业本。仅当一个工作簿中的行包含另一个工作簿中的某个值时,我才需要复制该行。这是我的代码,它适用于第一个i=21和i=22,但告诉我单元格中有错误。当我到达i=23时查找 For i = 21 To 35 Windows("Run Report.xlsm").Activate Dim strL3 As String strL3 = Sheets("Summary").Range("A" & i).Value Workbooks("Ace Surve

我有两本作业本。仅当一个工作簿中的行包含另一个工作簿中的某个值时,我才需要复制该行。这是我的代码,它适用于第一个i=21和i=22,但告诉我单元格中有错误。当我到达i=23时查找

For i = 21 To 35
    Windows("Run Report.xlsm").Activate
    Dim strL3 As String
    strL3 = Sheets("Summary").Range("A" & i).Value
    Workbooks("Ace Survey - Level 1 and level 3 Trending (w Resolution) v3").Activate
    Range("A1").Activate
    Cells.Find(What:=strL3, After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Activate
    If strL3 = "Call Disconnected" Or strL3 = "Caller Not Present" Then
        ActiveCell.Offset(2, 2).Select
    Else
        ActiveCell.Offset(1, 2).Select
    End If
    Application.CutCopyMode = False
    ActiveCell.Copy
    Windows("Run Report.xlsm").Activate
    Sheets("Summary").Select
    Range("G" & i).Select
    ActiveSheet.Paste
Next i

Find
如果找到某个对象,则返回
范围
对象,否则返回。您正在尝试激活使用Find的结果,即使它是空的-这将生成一个错误

您需要将
查找
尝试的结果存储在
范围
变量中,并检查

Dim rngFound As Range

Set rngFound = Range("A1").Find(...)
If Not rngFound Is Nothing Then
    ' we found something!
Else
    ' Nothing
End If

但是,正如建议的那样,你应该为你的问题提供更多的细节。

什么是“前两个i有效,但之后中断”的意思?你忘了告诉我们它是如何“断裂”的,也忘了问一个问题。请用你的问题来解决这两件事,这样有人可以试着帮助你。谢谢。它在i=21和i=22之间循环,但在23上,它告诉我单元格中有错误。再次,请单击您的问题(单击我已发布两次的链接),将该信息添加到那里,而不是添加到评论中。而且,“它告诉我有一个错误”并不是对错误的描述——它到底告诉了你什么?