我正在使用Excel 2010来编写VBA脚本,我希望将值从一个工作表("数据库")复制到另一个工作表("搜索"),因为某个标准通过IF声明履行,已经过验证。
我已经创建了一个模块,我已经编写了以下代码:
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 e o 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声明中,我引用了我想查看变量' Country'匹配"数据库"中的单元格表格,如果是,请将其复制到"搜索"片。但代码似乎不起作用,返回错误
Run-time error '1004':
Application-defined or object-defined error
为了解决这个问题,我试图更改代码并引用不同的工作表,但错误似乎与此有关。
我做错了什么?
谢谢
答案 0 :(得分:3)
问题在于这一行:
Sheets("Database").Range(Cells(i, 1), Cells(i, 9)).Copy
当您从搜索电子表格中运行它时,它会解释" Cells"来自"搜索"的细胞。请改用:
With Sheets("Database")
.Range(.Cells(i, 1), .Cells(i, 9)).Copy
End With