Excel vba变种数组可重用,必须擦除吗?

时间:2016-06-30 15:43:07

标签: arrays excel excel-vba vba

我有一个技术问题:

我的问题: 我创建了一个

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数组。这是否意味着我只需要在程序结束时清除它?

或者在两者之间清除它是一个好习惯吗?

最后但同样重要的是,您在我的代码中看到任何问题吗?更好的方法来执行这项任务?

非常感谢提前!

编辑: 记住 该任务的代码不正确,无需转移到数组!

1 个答案:

答案 0 :(得分:0)

简而言之(感谢rory!):

无需每次都擦除数组。 只有在离开程序之前。