当前位置: 首页 > 知识库问答 >
问题:

VBA-如何加快复制和粘贴[复制]的时间

巩才捷
2023-03-14

下面列出了完整的代码,我正在将数据透视表中DB10单元格的数据复制到Checklist表中的第N列--还要注意Checklist表中的行是动态的,每周增长3018行...这是减慢处理时间的部分(我对其进行了计时,在运行代码时完成处理需要大约8分钟)这部分是减慢处理速度的地方:

Sheets("PivotTables").Select
    Range("DB10").Select
    Selection.Copy
       Sheets("Checklists").Select
          Dim rng As Range
            NRowCount = Cells(Rows.Count, 1).End(xlUp).Offset(-3017).Row
              ARowCount = Cells(Rows.Count, 1).End(xlUp).Row
                For Each rng In Range("N" & NRowCount & ":N" & ARowCount)
                   rng.PasteSpecial xlPasteValues
                       Next rng

完整代码:

Sub WeeklyUpdate()
Application.ScreenUpdating = False
'
' WeeklyUpdate Macro
'

'


    Sheets("Checklists").Select
    Dim LR As Long

    LR = Range("A" & Rows.Count).End(xlUp).Row
    Range("A3:M" & LR).SpecialCells(xlCellTypeVisible).Select
'
    Selection.Copy
    Selection.End(xlDown).Select
    Selection.End(xlUp).Select
    Sheets("Checklists").Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial 
    xlPasteValues
    Sheets("Checklists").AutoFilterMode = False
    Sheets("PivotTables").Select
    Range("DB10").Select
    Selection.Copy
    Sheets("Checklists").Select
    Dim rng As Range
    NRowCount = Cells(Rows.Count, 1).End(xlUp).Offset(-3017).Row
    ARowCount = Cells(Rows.Count, 1).End(xlUp).Row
    For Each rng In Range("N" & NRowCount & ":N" & ARowCount)
    rng.PasteSpecial xlPasteValues
    Next rng

    Sheets("Home").Select

    Application.ScreenUpdating = True

    End Sub

共有1个答案

佟寒
2023-03-14

如果我理解正确的话,您只是将单元格DB10中的值粘贴到n[NRowCount]:n[ARowCount]范围内。

不要执行for循环,只需尝试以下内容:

Range("N" & NRowCount & ":N" & ARowCount).Value = Range("DB10").Value

它消除了循环,应该是立即的。

您的最终代码大致如下所示:

...
Sheets("Checklists").AutoFilterMode = False
Sheets("Checklists").Range("N" & NRowCount & ":N" & ARowCount).Value = Sheets("PivotTables").Range("DB10").Value
Sheets("Home").Select
 类似资料:
  • 我需要对SAP做一个大规模的改变。因此,我想有一个宏,复制3个不同的列从excel到sap(约3000行) 销售订单#-数据1-数据2 从excel复制销售订单-执行事务处理/NVA02-粘贴 在excel中复制数据1-在Sap中粘贴 在excel中复制数据2-在Sap中粘贴 下一个销售订单等直到最后一行 excel工作表将由多人用户使用,例如活动工作簿将比路径更有帮助 你能帮我提供一个VBA代码

  • 问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的

  • 问题内容: 当我尝试使用粘贴到单元格时,我要粘贴的单元格保持空白,但setValueAt()似乎可以正常工作。另外,当我尝试从一个单元格剪切或复制JPopupMenu时,如果要粘贴到另一个单元格,则我的“粘贴”选项将保持禁用状态。我不知道为什么。我的代码如下。 Here’s my code for 问题答案: 根据您的示例代码,并且必须填写空白,它对 我有用… Now, maybe you’d l

  • 问题内容: 我正在尝试2个替代方法: 忽略右键 忽略+ ,+ 这是我的代码: 这是我的HTML: 该功能有效,但不起作用。 问题答案: 你不能 您可以尝试阻止某些矢量(例如,使右键单击更加困难的黑客,拦截+ ,使其难以选择文本)……但是它们只能起到某种作用,并且不可能阻止所有矢量(编辑->复制) ?查看源代码??等…)。 如果您想保护内容免受技术含量较低的用户的侵害,则可以采用这些方法……但是,正

  • 我有一个简单的宏,它查看A1,然后复制和粘贴到另一张表的特定范围,回到原始表,然后偏移每一列,(复制和粘贴过程)直到第T列,然后下移1行并重复,然后将表保存为PDF,这个过程重复大约100次。 这两个工作表位于同一工作簿中,该工作簿在宏运行时已经打开。 请救命! 此外,这将有助于减少我的宏行太。 谢谢你的关注