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

Arrays Excel vba变量数组可重用,必须擦除吗?,arrays,excel,vba,Arrays,Excel,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(Is

我有一个技术问题:

我的问题: 我创建了一个

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)。我可以看到它会自动重新分配阵列。这是否意味着我只需要在程序结束时清除它

或者在两者之间进行清理是一种良好的做法

最后但并非最不重要的一点是,您看到我的代码中有任何问题吗?执行此任务的更好方法

非常感谢

编辑: 牢记 此任务的代码不正确,无需传输到数组

简而言之(多亏了罗里!):

不需要每次在此期间擦除阵列。 仅在离开程序之前。

简言之(感谢rory!):

不需要每次在此期间擦除阵列。
只有在离开程序之前。

老实说,我认为使用变量而不是每次只将一个范围的值分配给另一个范围没有任何好处。但是,不需要擦除数组。有趣。我多年来一直在为VBA编程,甚至不知道有这个擦除命令。@Rory。我是通过这种方式从“Power Programming 2013”中提取的数组传输方法来复制范围的(有点过分,我不是在处理数十万行)。你的建议是简单地从一个范围发送到另一个范围吗?@iDevlop,好的,我肯定做错了什么:在这种情况下是染料。如果您需要处理介于两者之间的数据,那么数组是有意义的,但不适用于此。另外,使用
Value2
应该比
Value
快一点。老实说,我认为使用变量比每次只将一个范围的值分配给另一个范围没有任何好处。但是,不需要擦除数组。有趣。我多年来一直在为VBA编程,甚至不知道有这个擦除命令。@Rory。我是通过这种方式从“Power Programming 2013”中提取的数组传输方法来复制范围的(有点过分,我不是在处理数十万行)。你的建议是简单地从一个范围发送到另一个范围吗?@iDevlop,好的,我肯定做错了什么:在这种情况下是染料。如果您需要处理介于两者之间的数据,那么数组是有意义的,但不适用于此。另外,使用
Value2
应该比
Value
稍微快一点。甚至在离开之前。它是自动销毁的。然而,在退出过程之前,
对象变量设置为
Nothing
似乎是一种很好的做法。@iDevlop-oh。。我试图遵循良好实践准则。。。我喜欢研究高级代码,通常我不会看到人们清除任何东西。。。在我弄明白之前,我会坚持好的做法,但我想垃圾收集器几乎做了所有的事情。。感谢您的见解,非常感谢!甚至在离开之前。它是自动销毁的。然而,在退出过程之前,
对象变量设置为
Nothing
似乎是一种很好的做法。@iDevlop-oh。。我试图遵循良好实践准则。。。我喜欢研究高级代码,通常我不会看到人们清除任何东西。。。在我弄明白之前,我会坚持好的做法,但我想垃圾收集器几乎做了所有的事情。。感谢您的见解,非常感谢!