【问题标题】:Optimize VBA Code to run faster优化 VBA 代码以更快地运行
【发布时间】:2017-10-30 20:53:31
【问题描述】:

朋友们,

我正在使用下面的代码来计算矩阵中两个变量 x,y(经度和纬度)数组的结果。因为公式比较复杂,需要很长时间才能得到所有的结果。谁能帮我优化代码以使其运行得更快?谢谢!

代码在两个选项卡之间运行,VBA 计算表和表 2。第一个数组从单元格 A3 开始,第二个数组从单元格 B1 开始。

Sub calculator()
Worksheets("Sheet2").Select

Dim long1 As Double
Dim lat1 As Double


Application.ScreenUpdating = False
x = 3
y = 2
While IsEmpty(Cells(x, 1)) = False

lat1 = Cells(x, 1).value



While IsEmpty(Cells(1, y)) = False

long1 = Cells(1, y).value

Worksheets("VBA Calculation Sheet").Select
Cells(28, 7) = lat1
Cells(29, 7) = long1

index = Cells(23, 7).value


Worksheets("Sheet2").Select

Cells(x, y) = index

y = y + 1
Wend

x = x + 1
y = 2

Wend

End Sub

【问题讨论】:

  • 如果代码有效,那么您需要在codereview.stackexchange.com 上发布这个问题,并使用更好的标题,它对于这个论坛来说太宽泛了,但非常适合那个论坛。
  • 我会阅读有关使用数组的内容。您的代码很慢,因为它不断与工作表交互。最好将数据存储在数组中,并在代码中(在内存中)进行处理。然后根据需要将最终结果输出到工作表。
  • 您还需要在工作表上显示正在完成的计算。为了加快速度,您需要限制需要参考工作表的次数。应该加载一个数组,遍历该数组在代码中进行计算并加载另一个数组以进行输出。这样,您只需访问工作表 2 或 3 次。这是主要的减速以及使用.Select

标签: vba optimization


【解决方案1】:

.Select 消耗大量资源。运行代码的更好方法是使用数组。请务必定义一个不同于Variant 的数组类型,以减少内存消耗。

【讨论】:

  • 这更像是一个评论而不是一个答案。
  • 哦,明白了!非常感谢,我将其更改为数组
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2021-08-05
  • 2020-01-13
  • 2021-11-10
相关资源
最近更新 更多