范围类的Excel VBA选择方法失败

标签 excel runtime-error 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

我在第 4 行收到运行时错误“1004” Range 类的 Select 方法失败。如何解决?

最佳答案

你没有Select一张你的床单Activate它。但实际上你shouldn't do either在大多数情况下。

您可以将代码缩短为:

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

请注意,我还声明了 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

请注意,我声明了一个 Workbook 变量并对其进行了限定。再给你一个好习惯!

关于范围类的Excel VBA选择方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24344607/

相关文章:

arrays - VBA:函数数组,ReDim 给出无效的 ReDim

excel - 为什么错误处理例程中的消息被打印两次?

android - 如何修复 Android 错误 "Background execution not allowed: receiving Intent {...}"

r - 将变化的 for 循环变量插入模型公式

excel - VBA 按钮可深入到数据透视表

vba - 如何在 excel vba 中卸载多个用户窗体?

python - 我正在写一个函数来查找数字是否是回文。它在第2行给了我一个运行时错误,这是函数定义的行[closed]

vba - 使用间隔计时器增加计数

vba - 删除工作表(如果存在)并创建一个新工作表

vba - 将表格复制到另一个工作表