Excel 复制每个循环的专用粘贴不规则退出

Excel 复制每个循环的专用粘贴不规则退出,excel,vba,excel-2013,Excel,Vba,Excel 2013,我有一个例程,可以为在Excel2003/2007/2010中运行良好的选择复制隐藏的备份公式。当我在2013年运行它时,它开始通过选择工作,然后退出,没有给出错误消息。当只测试这个循环时,它可能运行2个单元,可能运行5个单元,但不会超过6个。因为选择的大部分是非连续单元格组,如果不进行大手术重命名所有区域,我无法一次轻松复制整个区域 知道2013年发生了什么吗?我现在能做些什么使它工作 以下是未运行的代码的核心: Sub TestLoop() Dim c As Range F

我有一个例程,可以为在Excel2003/2007/2010中运行良好的选择复制隐藏的备份公式。当我在2013年运行它时,它开始通过选择工作,然后退出,没有给出错误消息。当只测试这个循环时,它可能运行2个单元,可能运行5个单元,但不会超过6个。因为选择的大部分是非连续单元格组,如果不进行大手术重命名所有区域,我无法一次轻松复制整个区域

知道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
子测试循环()
调光范围
对于选择中的每个c
如果c.Locked=False且不是数字(c.Offset(0,30)。公式)_
和c.偏移量(0,30)。公式“”则
用c
.偏移量(0,30).复制
.Paste特殊配方奶粉
以
如果结束
下一个c
端接头

尝试跳过剪贴板,直接复制公式。我遇到了这样使用剪贴板的宏的问题-我认为,由于剪贴板实际上是为最终用户设计的,它不是为程序用作临时数据存储而设计的,因此您会遇到一些古怪的行为

更改此代码:

.Offset(0, 30).Copy
.PasteSpecial xlPasteFormulas
为此:

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

明亮的当然,我应该考虑非剪贴板方式,作为奖励,它也应该运行得更快。谢谢+1是的,按照你的建议,尽可能直接工作,