在VBA中使用IF语句将表单中的值复制到另一个表单中

我正在使用Excel 2010编写一个VBA脚本,我想从一个工作表(“数据库”)复制到另一个工作表(“search”)的值,因为已经validation了由IF语句完成的特定条件。

我已经写了下面的代码创build了一个模块:

Sub searchdatabase() '1. declare variables '2. clear old search results '3. Find records that match criteria and paste them Dim country As String Dim category As String Dim subcategory As String Dim finalrow As Integer Dim i As Integer 'row counter Sheets("Search").Range("E11:P1000").ClearContents 'E11:P1000 eo range de celulas que ele vai apagar antes de correr o script. Se quiser mudar ou adicionar headers, tenho de mudar este range tambem. country = Sheets("Search").Range("E5").Value finalrow = Sheets("Database").Range("A200000").End(xlUp).Row For i = 2 To finalrow If Sheets("Database").Cells(i, 1) = country Then Sheets("Database").Range(Cells(i, 1), Cells(i, 9)).Copy Sheets("Search").Range("E600").End(xlUp).Offset(1, 0).PasteSpecial xlPasteFormulasAndNumberFormats End If Next i End Sub 

在IF声明中,我引用了我想查看variables“国家”是否与“数据库”表中的单元格匹配,如果是,则将其复制到“search”表单。 但代码似乎没有工作,返回错误

 Run-time error '1004': Application-defined or object-defined error 

为了解决这个问题,我试图改变代码,并参考不同的工作表,但错误似乎仍然与此有关。

我究竟做错了什么?

谢谢

问题在于这一行:

 Sheets("Database").Range(Cells(i, 1), Cells(i, 9)).Copy 

当您从search电子表格运行它时,它会将“单元格”解释为“search”中的单元格。 用这个代替:

  With Sheets("Database") .Range(.Cells(i, 1), .Cells(i, 9)).Copy End With