use*_*861 1 excel vba runtime-error excel-vba
我试图将各种工作表中的数据范围复制到一个工作表中.我写了这段代码:
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
Run Code Online (Sandbox Code Playgroud)
我得到一个运行时错误'1004'在第4行上选择Range类失败的方法4.如何修复它?
Dou*_*ncy 10
你不是Select
一张纸Activate
.但实际上你在大多数情况下都不应该这样做.
您可以将代码缩短为:
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
Run Code Online (Sandbox Code Playgroud)
请注意,我也宣布了i
.我建议声明所有变量,并使用Option Explicit确保您在所有情况下都使用您认为的变量.
编辑:Simoco的编辑很好:这是我想出的:
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
Run Code Online (Sandbox Code Playgroud)
请注意,我声明了一个Workbook变量并且对它有资格.对你来说还有一个好习惯!
归档时间: |
|
查看次数: |
23739 次 |
最近记录: |