【问题标题】:Run Time Error 1004 You Can't Paste This Here运行时错误 1004 您不能在此处粘贴
【发布时间】:2020-05-06 01:08:31
【问题描述】:

我的代码在前 800 次迭代中工作(它在一个包含大约 4,000 个文件的文件夹中运行),现在它抛出了这个错误

“运行时错误 '1004':您不能在此处粘贴此内容,因为复制 区域和粘贴区域的大小不同。只选择一个单元格 粘贴区域或相同大小的区域,然后再次尝试粘贴。”

这是我的代码:(仅与错误相关的部分)

With sht1
        With .Cells(1, 1).CurrentRegion
            With .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
                If CBool(Application.Subtotal(103, .Columns(1))) Then
                    .Cells.Copy Destination:=.Cells(.Rows.Count + 1, 1)
                End If
                .AutoFilter
                .Cells(1, 1).Resize(.Rows.Count, 1).EntireRow.Delete
            End With
        End With
    End With

错误发生在这一行:

.Cells.Copy Destination:=.Cells(.Rows.Count + 1, 1)

【问题讨论】:

  • “前 800 次迭代”!?也许你已经离开了工作表的底部?
  • @SJR 代码在一个包含大约 4k 个文件的文件夹中运行。它在每个文件上运行一次,然后保存并关闭。我不是指在单个文件/工作表上进行 800 次迭代。
  • 您是否尝试过设置断点并单步执行以查看出错时会发生什么?
  • @SJR 是的。我已经逐步完成了代码。我不明白为什么会发生这种情况,因为由于它粘贴到当前数据下方的区域,因此它具有所需的空间,并且数据始终从相同的位置开始并以相同的列数结束。跨度>
  • 在复制之前尝试 debug.print 或 currentregion.address 上的 msgbox 以检查是否符合预期。

标签: excel vba


【解决方案1】:

原来问题是 excel 最多只允许 1,048,576 行,而我试图在下面粘贴。

为了解决这些限制并加快我的代码速度,我现在使用 PowerQuery 来导入和过滤数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多