在For Each循环中复制PasteSpecial不规则地退出

时间:2014-01-03 22:45:44

标签: excel vba excel-2013

我有一个例程来复制隐藏的备份公式,以便在Excel 2003/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

1 个答案:

答案 0 :(得分:3)

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

更改此代码:

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

对此:

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