【问题标题】:Debugging. Copy a variable number of cells in one sheet and paste into another sheet调试。在一张纸中复制可变数量的单元格并粘贴到另一张纸中
【发布时间】:2015-06-03 03:43:56
【问题描述】:

代码的目标是从 Sheet2 复制 n 行和三列单元格到 Sheet1 中的最后一个空行。我尝试使用要复制的范围内的单元格属性,但这一行给了我一个运行时错误“1004”(应用程序定义或对象定义的错误)。

如何改正?

Private Sub CommandButton1_Click()
    Dim sum As Integer
    n = 7
    Sheets("Sheet2").Range(Cells(11, 15), Cells((11 + n), 18)).Copy
    With Sheets("Sheet1").Range("A500").End(xlUp).Offset(1, 0)
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteValues
    End With
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在将范围对象作为参数传递给 Range 属性时,经常会引起人们注意的一个 [问题] 是,如果您需要指定工作表对象(这是一个很好的做法),则需要为所有 Range/您使用的单元格属性。

    (来源/更多阅读:http://excelmatters.com/referring-to-ranges-in-vba/

    你可以使用:

    With Sheets("Sheet2")
        .Range(.Cells(11, 15), .Cells((11 + n), 18)).Copy
    End With
    

    或者:

    Sheets("Sheet2").Range(Sheets("Sheet2").Cells(11, 15), Sheets("Sheet2").Cells((11 + n), 18)).Copy
    

    代替:

    Sheets("Sheet2").Range(Cells(11, 15), Cells((11 + n), 18)).Copy
    

    或者你可以像这样构建范围:

    Sheets("Sheet2").Range("O11:R" & (11 + n)).Copy
    

    编辑代码:

    Private Sub CommandButton1_Click()
    Dim sum As Integer
    n = 7
    Sheets("Sheet2").Range("O11:R" & (11 + n)).Copy 'Edited Line
    With Sheets("Sheet1").Range("A500").End(xlUp).Offset(1, 0)
        .PasteSpecial xlPasteFormats
        .PasteSpecial xlPasteValues
    End With
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2020-02-02
      • 2023-02-02
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2020-12-10
      • 1970-01-01
      相关资源
      最近更新 更多