将PasteSpecial复制到For Each循环不规则地退出

我有一个例程来复制在Excel 2003/2007/2010中正常工作的select的隐藏的备份公式。 当我在2013年运行它,它开始通过select工作,然后只是退出,没有错误信息给出。 当testing这个循环时,它可能运行2个单元格,它可能运行5个单元格,但不会超过6个。因为select大多是非连续单元格的组,所以我不能一次简单地复制整个范围没有大手术重新命名所有的范围。

不知道2013年发生了什么? 我现在可以做些什么来使它工作?

这是没有运行的代码的核心:

Sub TestLoop() Dim c As Range For Each c In Selection If c.Locked = False And Not IsNumeric(c.Offset(0, 30).Formula) _ And c.Offset(0, 30).Formula <> "" Then With c .Offset(0, 30).Copy .PasteSpecial xlPasteFormulas End With End If Next c End Sub 

尝试跳过剪贴板,直接复制公式。 我遇到了像这样使用剪贴板的macros的问题 – 我想由于剪贴板是为最终用户准备的,它并不是被程序用作临时数据存储的devise,所以你会遇到一些片状行为。

更改此代码:

 .Offset(0, 30).Copy .PasteSpecial xlPasteFormulas 

对此:

 .FormulaR1C1 = .Offset(0, 30).FormulaR1C1