【发布时间】:2023-03-13 23:43:01
【问题描述】:
我有一个技术问题:
我的问题: 我创建了一个
Dim arrTemp as Variant
Dim wbSource as workbook
Dim wbTarget as workbook
因为我需要将多个工作表中的多个范围(非固定范围)导出到另一个工作簿。我的代码如下:
' Worksheet 1
arrTemp = wbSource(1).Range("A1:B2").value
wbTarget(1).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
' Worksheet 2
arrTemp = wbSource(2).Range("A1:B2").value
wbTarget(2).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
' Worksheet 3
arrTemp = wbSource(3).Range("A1:B2").value
wbTarget(3).Range("A1:B2").value = arrTemp
If Not(IsArrayEmpty(arrTemp)) Then Erase arrTemp
(工作表一开始可以是空的,这就是为什么空的 arr 处理程序) (工作表可以包含 int/str/double/...,并且大小没有那么大,无法定义特定的 arr 类型)
我的问题是: 每次都擦除数组有意义吗?还是会被自动覆盖?
我在定义具有新范围的数组之前和之后进行了测试以检查数组的属性(Lbound 和 UBound)。我可以看到它会自动 Redim 数组。是不是意味着我只需要在程序结束时清除它?
或者在两者之间清除它是一个好习惯?
最后但同样重要的是,您在我的代码中发现任何问题吗?执行此任务的更好方法?
非常感谢!
编辑: 记住 此任务的代码不正确,无需转入数组!
【问题讨论】:
-
老实说,我完全看不到使用变量而不是每次都将一个范围的值分配给另一个范围的任何好处。但是,不需要擦除数组。
-
有趣。我多年来一直在全职编程 VBA,甚至不知道有这个 Erase 命令。
-
@Rory。我从“Power Programming 2013”中以这种方式提取了数组传输方法来复制范围(有点矫枉过正,我没有处理数十万行)。你的建议是简单地从一个范围发送到另一个范围吗?
-
@iDevlop,好吧,我肯定做错了什么:D
-
在这种情况下是的。如果您需要处理介于两者之间的数据,则数组将有意义,但不适用于此。另外,使用
Value2应该比Value稍快。