如何提高宏速度,求大神指教在线等

如何提高宏速度,求大神指教在线等,第1张

我没有太多编写宏的经验,因此需要此社区的帮助以解决遇到的以下问题:如何提高VBA宏代码的速度?

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

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

因此,我最好的猜测是第二个宏运行缓慢,因为它必须开始粘贴到第六行,并且前5行中可能有一些内容需要很长时间才能使宏经过(有很多单元格引用其他工作簿)来确定粘贴的下一行应该在哪里。这是我最好的猜测,因为我几乎不知道宏的任何信息,所以我不能确定问题是什么。

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

第二个循环可能简化

Sheets("总表1")activate

Range(Cells(1, 1), Cells(320, 53))Select

SelectionCopy

Sheets("要粘贴的表")activate

Cells(1, 1)Select

ActiveSheetPaste

把汇总表里面的对单元格引用的部分用数组来替代,既然已经用了数组arr,那么不妨再多用点数组,

如for循环里面的数据判断,Mid(Range("h" & a), L + 1, 4),改成数组:

For b = 1 To js

L = InStr(Range("h" & a), "-")

If L > 1 Then x = Mid(Range("h" & a), L + 1, 4) Else x = Left(Range("h" & a), 4)

If x <> temp Then

If temp <> "" Then Workbooks(temp & "xlsx")Save: Workbooks(temp & "xlsx")Close Savechanges:=False: 备份_数据 '涵数方法

查找对象_备份 (x) '涵数方法

End If

temp = x

Set wb = Workbooks(x & "xlsx")Sheets(x)

i = wb[h1048576]End(3)Row + 1

Set c = wbRange("h2")Resize(i - 1, 1)Find(arr1(b, 8), , , xlWhole)

If Not c Is Nothing Then MsgBox Range("h" & a) & " 已有重号,请检查。重号文件在 " & wbName & "文件名,并且在" & cRow & "行", , "": 结束 (a): Exit Sub

For m = 1 To 8

If m <> 4 Or m <> 7 Then wbCells(i, m) = arr1(b, m)

Next m

Next b

以上就是关于如何提高宏速度,求大神指教在线等全部的内容,包括:如何提高宏速度,求大神指教在线等、如何解决Vba代码因循环导致运行速度太慢的问题附代码(见问题补充)请高手指点、VBA怎么让我代码提速,运行1万多行,用了10几分种等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10163115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存