范围类的Excel VBA select方法失败

时间:2014-06-21 18:30:55

标签: excel-vba runtime-error vba excel

我正在尝试将各种工作表中的数据范围复制到一个工作表中。我写了这段代码:

Sub sub1()
For i = 1 To 3
Sheets(i).Select
Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Select 'line4
Selection.Copy
Sheets(6).Select
Cells(1, i).Select
Selection.PasteSpecial xlPasteValues
Next i
End sub

我得到一个运行时错误'1004'在第4行选择Range类的方法失败。如何解决?

1 个答案:

答案 0 :(得分:10)

你不要SelectActivate张。Sub sub1() Dim i As Long For i = 1 To 3 With Sheets(i) .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Copy End With Sheets(6).Cells(1, i).PasteSpecial xlPasteValues Next i End Sub 。但实际上在大多数情况下你shouldn't do either

您可以将代码缩短为:

i

请注意,我还声明了Sub sub1() Dim i As Long Dim wb As Excel.Workbook Set wb = ActiveWorkbook For i = 1 To 3 With wb.Sheets(i) .Range("A1:A" & .Range("A1").End(xlDown).Row).Copy wb.Sheets(6).Cells(1, i).PasteSpecial xlPasteValues End With Next i End Sub 。我建议声明所有变量,并使用Option Explicit确保您在所有情况下都使用您认为的变量。

编辑:Simoco的编辑很好:这就是我想出的:

{{1}}

请注意,我声明了一个Workbook变量并且对它有资格。对你来说还有一个好习惯!