【问题标题】:Excel VBA Paste Link LoopExcel VBA粘贴链接循环
【发布时间】:2019-01-12 11:14:01
【问题描述】:

我想将数据从多个工作表移动到一个摘要工作表中。并希望将其从活动工作表(我用鼠标光标手动选择)和倒数第二个连续工作表之间移动。 下面的代码效果很好,但是当代码到达粘贴链接行时我有两个问题:

  1. 仅当我实际单击“1819 年摘要论文”表时,才会粘贴链接。这是一个问题,因为汇总表中填充了我要排除的表中的数据。

  2. 我在工作中使用 excel 2010 将这段代码放在一起,它没有给我带来任何问题(除了上面的问题)。但是,当我使用 excel 2016 将文件发送回家时,我在随机点出现运行时错误,因为代码尝试遍历粘贴链接行。有时错误显示为“没有粘贴链接”(即使有),只需单击调试然后继续即可解决此问题,这样代码就可以正常工作。但在其他时候,它会显示“工作表类的粘贴方法失败”,我无法对此进行调试,代码也不会继续执行。

子工作循环()

Dim i As Long
Dim DestRow As Long

For i = ActiveSheet.Index To Sheets.Count - 1

    DestRow = Sheets("Summary 1819 paper").Range("B" & Rows.Count).End(xlUp).Row + 1

    Sheets("Summary 1819 paper").Range("B" & DestRow).Value = Sheets(i).Range("C1")
    Sheets("Summary 1819 paper").Range("C" & DestRow).Value = Sheets(i).Range("E1")
    Sheets("Summary 1819 paper").Range("D" & DestRow).Value = Sheets(i).Range("A16")


    Sheets(i).Range("F128").Copy
    Sheets("Summary 1819 paper").Range("E" & DestRow).Select
    Sheets("Summary 1819 paper").Paste Link:=True

    Sheets(i).Range("L7").Copy
    Sheets("Summary 1819 paper").Range("F" & DestRow).Select
    Sheets("Summary 1819 paper").Paste Link:=True

    Sheets(i).Range("M7").Copy
    Sheets("Summary 1819 paper").Range("G" & DestRow).Select
    Sheets("Summary 1819 paper").Paste Link:=True

    Sheets(i).Range("F24").Copy
    Sheets("Summary 1819 paper").Range("L" & DestRow).Select
    Sheets("Summary 1819 paper").Paste Link:=True

    Next i

End Sub

如果您能帮助我解决这两个问题并了解我做错了什么,我将不胜感激。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    问题是ActiveSheet.index按照它所说的去做:它看向活动表的索引。您的代码有效,即:运行所有工作表,可能是因为您的工作表“摘要 1819 论文”是您工作簿的第一个工作表。 您想浏览除工作簿的第一个(您的摘要表)之外的所有工作表吗?然后应用for i = 2 to sheets.Count 而不是你当前的For i = ActiveSheet.Index To Sheets.Count - 1

    关于您的第二期。使用 F8 逐步运行您的代码。看看它到底在哪里出错并尝试像那样解决它。想不通?添加“debug.print i”以在直接窗口中查看错误发生在哪张纸上。您也可以尝试修改您的

    Sheets(i).Range("F24").Copy
    Sheets("Summary 1819 paper").Range("L" & DestRow).Select
    Sheets("Summary 1819 paper").Paste Link:=True
    

    Sheets("Summary 1819 paper").Range("L' & DestRow).Formula = "Sheet"&i&"!F24"
    

    强制性未经测试。 问候,

    【讨论】:

    • 您好,感谢您的回复。如果我排除所有处理复制/粘贴链接的行,则代码在任何活动表中都可以正常工作(这是我需要的)。我每周都会向此工作簿添加新工作表,当我这样做时,我会再次执行代码以用新数据填充摘要工作表。除非我从活动工作表(我插入的第一个新工作表)开始,否则摘要工作表也总是会填充旧工作表中的数据。
    • 关于错误的第二个问题现已解决。在代码运行时,如果我避免单击代码顺利完成的任何内容。我继续阅读此处以避免在可能的情况下使用“选择”,因为如果在代码运行时单击某些内容,这可能会导致错误。也许这就是随机行发生错误的原因,尽管在我点击和发生运行时错误之间似乎没有模式
    猜你喜欢
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 2022-01-03
    • 2016-08-05
    相关资源
    最近更新 更多