【发布时间】:2020-08-12 22:00:59
【问题描述】:
最近我想知道通过切换下面的部分代码来加速程序的可能性:
Dim cell as Variant
Dim myValues() as Double
ReDim myValues(myRange.Count - 1)
Dim i as Integer: i = 0
For Each cell in myRange.Cells
myValue(i) = cell.Value
i = i + 1
Next cell
进入一个循环,我可以直接引用每个单元格的值,而不是实例化一个单元格对象,从给定范围内为其分配一个单元格值,然后提取单元格值。
在我看来,伪代码看起来像这样:
Dim cellValue as Double
Dim myValues() as Double
ReDim myValues(myRange.Count - 1)
Dim i as Integer: i = 0
For each cellValue in myRange.Cells.Values
myValues(i) = cellValue
i = i + 1
Next cellValue
如果我的整体概念从一开始就是错误的,或者如果您无法更快地从 Range 中获取单元格值,那么毫无疑问。 由于这是我的第一篇文章,我可能写错了一些东西/在错误的发布约定中。告诉我,我会解决的。
干杯
【问题讨论】:
-
我不确定你到底在问什么。您可以将范围分配给没有循环的数组,例如
myValues=range("A1:A10").value。网上很多。
标签: excel vba optimization foreach range