【发布时间】:2017-06-21 21:18:04
【问题描述】:
我一直在研究一个非常大的宏。
我把这个项目搁置了 2 天,去做其他事情。
我把它拿回来了,现在我得到一个 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 将所有粘贴的单元格视为非空单元格。 Range("A1").Value = Range("A1").Value,VBA将所有粘贴的单元格视为非空单元格。
如果我做一个 =Len() 测试,它的 0 个字符。如果我做一个 =IF(a1="","x","") 测试它的“x”。如果我执行 =CountA(),我得到一个 1。Ctrl+end 将我带到 AA3086,即实际数据集的末尾,而不是迄今为止最右边的列。
解决方法是尝试将“Cells.Select”更改为更有针对性的参考,但这将是在不同地方进行大量修补的开始。
有没有其他人经历过这样的事情,或者他们在过去的几天里有过这种经历吗?
谢谢,
【问题讨论】:
-
如果您可以共享一个复制问题的工作簿会有所帮助(只需要上面的代码和一些虚拟数据)
-
谢谢。我下班回家,把工作簿放到我的个人电脑上,然后启动宏,它仍然像魅力一样工作。所以这意味着两天前在我的公司网络中发生了一些事情,这对 VBA 造成了损害。您的链接为我提供了第一个线索,让我尝试追查导致问题的原因。