相关疑难解决方法(0)

如何提高VBA宏代码的速度?

我没有太多编写宏的经验,因此需要这个社区的帮助来解决以下问题:

我的宏复制在一个工作表中的垂直范围内输入的值范围,然后将值水平(转置)粘贴到另一个工作表中.理论上它会将第一张表中的值粘贴到第二张没有内容的工作表的第一行.由于前五行具有内容,因此将值粘贴到第六行.运行宏时遇到的问题是我觉得它太慢了,所以我希望它运行得更快.

我有相同的宏做同样的事情,但相反将值粘贴到另一个工作表到第一行,它运行完美.

因此,我最好的猜测是第二个宏运行缓慢,因为它必须在第六行开始粘贴,前五行可能会有一些内容花费大量时间让宏通过(有很多单元格引用其他工作簿)以确定下一行的粘贴位置.这是我最好的猜测,因为我几乎不知道宏,我不能肯定问题是什么.

我特此向您提供宏的代码,并真诚地希望有人能告诉我是什么让我的宏变慢,并为我提供了如何让它运行得更快的解决方案.我认为一个解决方案可能是宏可能不应该考虑前五行数据并立即开始在第6行粘贴第一个条目.然后在下一次第7行等等.这可能是一个解决方案,但我不知道如何编写代码以便它会这样做.

感谢您花时间帮我找到解决方案,以下是代码:

Sub Macro1()
Application.ScreenUpdating = False

    Dim historyWks As Worksheet
    Dim inputWks As Worksheet

    Dim nextRow As Long
    Dim oCol As Long

    Dim myCopy As Range
    Dim myTest As Range

    Dim lRsp As Long

    Set inputWks = wksPartsDataEntry
    Set historyWks = Sheet11

      'cells to copy from Input sheet - some contain formulas
      Set myCopy = inputWks.Range("OrderEntry2")

      With historyWks
          nextRow = .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0).Row
      End With

      With inputWks
          Set myTest = myCopy.Offset(0, 2)

          If Application.Count(myTest) > …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

9
推荐指数
3
解决办法
4万
查看次数

标签 统计

excel ×1

excel-vba ×1

vba ×1