VBA-自发的“Excel无法插入新单元格”错误

VBA-自发的“Excel无法插入新单元格”错误,excel,vba,Excel,Vba,我一直在研究一个非常大的宏 我把这个项目搁置了两天去做其他事情 我重新拿起它,现在我得到一个1004运行时错误: Microsoft Excel无法插入新单元格,因为它将推送非空单元格 工作表末尾的单元格。这些单元格可能看起来是空的,但是 具有空值、某些格式或公式。删除足够的行 或列,为要插入的内容腾出空间,然后重试 错误出现在以下代码中: Sub Initial_Setup() 'Create Transform Tab Sheets.Add Before:

我一直在研究一个非常大的宏

我把这个项目搁置了两天去做其他事情

我重新拿起它,现在我得到一个1004运行时错误:

Microsoft Excel无法插入新单元格,因为它将推送非空单元格 工作表末尾的单元格。这些单元格可能看起来是空的,但是 具有空值、某些格式或公式。删除足够的行 或列,为要插入的内容腾出空间,然后重试

错误出现在以下代码中:

    Sub Initial_Setup()

    'Create Transform Tab

        Sheets.Add Before:=Worksheets("Lists")
        ActiveSheet.Name = "Transform"

    'Copy Raw Data Over

        Sheets("Sitedata").Select
        Cells.Select
        Selection.Copy
        Sheets("Transform").Select
        Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False

    Columns("A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
我对此进行了研究,从隐藏字符到自动填充再到冻结窗格

这是踢球的人,这不是我现在唯一一个出错的地方。移动数据的方法无关紧要。粘贴特殊,VBA将所有粘贴的单元格视为非空单元格。RangeA1.Value=RangeA1.Value,VBA将所有粘贴的单元格视为非空单元格

如果我做一个=Len测试,它的0个字符。如果我做a=IFa1=,x,测试它的x。如果我做=CountA,我得到1。Ctrl+end将我带到AA3086,即实际数据集的末尾,而不是右边最远的列

解决方法是尝试更改单元格。选择一个更有针对性的引用,但这将是在不同位置进行大量修补的开始

有没有其他人经历过这样的事情,或者他们在过去几天里经历过这样的事情


谢谢,

我认为错误消息的意思正是它所说的。只要宏插入行,就会触发该消息。如果您在一张全新的工作表上尝试,它不会给您带来任何问题,是吗?

虽然您没有错,但我不明白空单元格的粘贴值是如何引入空值的。粘贴值的目的之一不是不这样做吗?而且,我一辈子都不知道我能做些什么,才能让它从两天前的正常工作变成现在的不工作,因为我从一封电子邮件中提取了一份文件,并且在发送时正在工作。真的试图找到一种方法,不需要从功能上重写它,以消除这个错误。如果您的工作表中有某种原因导致这个错误,那么如果您创建工作簿的副本,您就有复制该内容的风险。如果您改为通过复制块来重新创建工作簿,它可能会起作用。另外,你在回复中提到引入了空值,但我可以在你的原始问题中看到任何与此相关的东西,要么是Excel更新出来并更改了某些内容,要么就是我疯了。我并没有说引入null,但还有什么其他变量的len为0,标识为,CountA返回值为1?我明白了。最后一个想法。选择数据集右侧的所有数据并删除所有格式。然后对数据集下方的所有数据执行相同的操作,并执行相同的操作。只需注释掉insert命令之前的内容,删除AA3086右侧和下方的整列和整行,然后运行insert,出现相同的错误。这对我来说毫无意义。没有什么比这更重要的了?:如果你能共享一个工作簿,这个工作簿可以复制问题,只需要上面的代码和一些虚拟数据。谢谢。我下班回到家,将工作簿放到我的个人电脑上,启动宏,它仍然像一个魔咒一样工作。这意味着我的公司网络在两天前发生了一些事情,导致VBA瘫痪。您的链接为我提供了第一条线索,让我尝试找出问题的原因。