尝试从autofilter复制数据并复制到另一个工作表

时间:2014-02-25 20:16:11

标签: excel excel-vba vba

我一直收到1004的错误 - 我真的试图让我的头围绕着VBA,而且我有很多这样的错误!我录制了宏,然后编辑了它添加用户输入框和外卡temrms,我肯定会;

"*" & search & "*"

我的目标是在打开工作表SP时让宏打开用户输入框。然后搜索表“产品表”以获取用户输入。复制单元格内容,并粘贴到“SP”

中的单元格

我的最终目标是然后搜索每个其他coloumn以获得相同的字符串并复制到表格的底部(下一个空行) - 但我想尝试自己试一试。

我被困在这个

Range("A1:I500").Select    

这是我得到错误1004的地方

下面是我的脚本

Private Sub Worksheet_Activate()

    'do input box

    Dim search
    search = InputBox("What are you searching for?")


    'delete old data

    Application.ScreenUpdating = False
    Range("B7:I500").Select

    'do autofilter

    Sheets("Product Table").Select
    Range("A1:I500").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$I$809").AutoFilter Field:=1, Criteria1:="*" & search & "*", _
        Operator:=xlAnd
    Columns("A:I").Select
    Range("I1").Activate
    Selection.Copy
    ActiveSheet.Range("$A$1:$I$809").AutoFilter Field:=1
    Sheets("SP").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("F16").Select
    Application.ScreenUpdating = True
End Sub

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

我记不起确切的语法,但我认为你需要关注你的表格:

Sheets("Product Table").Activate

在尝试选择范围

之前,先将其放入

修改

确定。我重新创建了错误,但不是和你在同一个地方。我收到错误:

Range("B7:I500").Select

你能仔细检查 - 我认为可能是因为你试图从Worksheet_Activate中选择当前工作簿中的数据而导致错误。

编辑2

没错!正如我想的那样,正在引起错误,因为您正在尝试访问尚未激活的工作表中的单元格。为了解决它,您需要隐式引用Worksheet_Activate中加载的工作表名称,例如:

Sheets("MyWorkSheet").Activate
Sheets("MyWorkSheet").Range("B7:I500").Select

显然用正确的名称替换MyWorkSheet。