【问题标题】:Run-time error 1004运行时错误 1004
【发布时间】:2014-07-09 20:28:41
【问题描述】:

我遇到了一个新的 VBA 问题:某些代码行仅在相关工作表处于活动状态时才会执行,否则它们会生成错误(运行时错误“1004”:应用程序定义或对象定义错误")。我需要代码能够在后台运行。

也许有一双新的(VBA 精通)眼睛的人可以发现这些线条有什么问题。 (我在这里将它们一起发布,但它们实际上来自不同的宏。)

Dim senaste As Range
Sheets("PA").Range(Cells(senaste.Row, (senaste.Column - 2)), Cells(senaste.Row, senaste.Column)).Copy

Worksheets("GL").Range(Cells(3, 1), Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete

编辑:下面的答案很好!用不同的线做同样的事情,坐标变得疯狂,发生了什么? (-4 和 -9 曾经是 -1。)

Set pt = Worksheets("PA").PivotTables("A")
pt.DataBodyRange.Range(pt.DataBodyRange.Cells(-4, (pt.DataBodyRange.Cells.Columns.Count - 9)), pt.DataBodyRange.Cells((pt.DataBodyRange.Cells.Rows.Count - 6), (pt.DataBodyRange.Cells.Columns.Count - 7))).Copy

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您没有正确限定所有范围 - 您需要限定所有 Range 和 Cells 调用,以便它们指定相同的工作表:

    Dim senaste As Range
    Sheets("PA").Range(Sheets("PA").Cells(senaste.Row, (senaste.Column - 2)), Sheets("PA").Cells(senaste.Row, senaste.Column)).Copy
    
    Worksheets("GL").Range(Worksheets("GL").Cells(3, 1), Worksheets("GL").Cells(Sheets("GL").UsedRange.Rows.Count, Sheets("GL").UsedRange.Columns.Count)).Delete
    

    或者您可以使用With 块进行整理:

    Dim senaste As Range
    With Sheets("PA")
        .Range(.Cells(senaste.Row, (senaste.Column - 2)), .Cells(senaste.Row, senaste.Column)).Copy
    End With
    

    同样:

    With Worksheets("GL")
       .Range(.Cells(3, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Delete
    End With
    

    注意所有.Range.Cells 调用之前的点。

    对于你更新的部分,你想要这个:

    Set pt = Worksheets("PA").PivotTables("A")
    With pt.DataBodyRange
        pt.Parent.Range(.Cells(1, .Columns.Count - 3), .Cells(.Rows.Count - 1, .Columns.Count - 1)).Select
    End With
    

    请注意,第一个 Range 调用需要使用 Worksheet 进行限定,而不是 DataBodyRange,否则您将获得与所需位置的范围偏移。

    【讨论】:

    • 谢谢!!更新的问题。
    • @Emmy 我也更新了答案来解决这个问题。 (情况略有不同)
    • 你是最棒的!谢谢一百万!
    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 2016-03-25
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2016-07-06
    相关资源
    最近更新 更多