多个工作表自动填充错误1004

时间:2015-07-24 06:27:42

标签: excel vba excel-vba excel-2013 autofill

我想创建一个在多个工作表中执行自动填充的按钮。但似乎我一次只能自动填充一张表......这是代码:

Private Sub CommandButton1_Click()
Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 1)).AutoFill Destination:=Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 1))
Sheets("Sheet2").Range(Cells(1, 1), Cells(1, 1)).AutoFill Destination:=Sheets("Sheet2").Range(Cells(1, 1), Cells(2, 1))
End Sub

很简单。如果我把它分成两个不同的按钮,它们工作得很好。我已经尝试了工作表()。激活,但它没有帮助。 (大多数人不建议不要激活)也尝试写 Sub ,但同样的问题仍然存在,因为"错误1004"。

2 个答案:

答案 0 :(得分:1)

您遇到了一个常见的编码错误,其中Range.Cells property内的Range object没有明确定义其父级。

Private Sub CommandButton1_Click()
    With Sheets("Sheet1")
        .Range(.Cells(1, 1), .Cells(1, 1)).AutoFill _
          Destination:=.Range(.Cells(1, 1), .Cells(2, 1))
    End With
    With Sheets("Sheet2")
        .Range(.Cells(1, 1), .Cells(1, 1)).AutoFill _
            Destination:=.Range(.Cells(1, 1), .Cells(2, 1))
    End With
End Sub

注意.Range(.Cells(1, 1), .Cells(1, 1))而非.Range(Cells(1, 1), Cells(1, 1))。您的原始文件试图在另一个工作表上定义包含单元格的范围。

With ... End With statement可以更轻松地分配父工作表,并且不会模糊您想要完成的任务。

答案 1 :(得分:0)

当我添加Activate:

时,它会起作用
Sheets("Sheet1").Activate  'added
Sheets("Sheet1").Range(Cells(1, 1), Cells(1, 1)).AutoFill _
        Destination:=Sheets("Sheet1").Range(Cells(1, 1), Cells(2, 1))

Sheets("Sheet2").Activate  'added
Sheets("Sheet2").Range(Cells(1, 1), Cells(1, 1)).AutoFill _
    Destination:=Sheets("Sheet2").Range(Cells(1, 1), Cells(2, 1))