在 Excel VBA 中将一个变体分配给另一个变体
Assigning one Variant to Another in Excel VBA
所以我的 Excel 工作表上有两列(不相邻的)数据,条目数不同。我将他们的数据加载到两个变体中,称为 arr1 和 arr2。在接下来的处理中,我想引用条目最少和条目最多的列,所以我定义了两个Variant变量shortArr和longArr,并根据谁的Ubound()越大,给他们赋值arr1和arr2。我的问题是:
- 将一个变体分配给另一个变体是否合法,例如 "shortArr = arr1"?
- 如果是,变体是否需要首先具有相同的边界?
- 如果我这样做,内存使用量会加倍吗,或者 shortArr 和 arr1 基本上只是指向同一个数组的指针吗?
提前致谢!
如果没有循环,VBA 您想要的大部分内容都无法实现:
- Is it legal to assign one Variant to another, like "shortArr = arr1"?
- If it is, do the Variants need to have the same bounds first?
是的,这很正常。你可以分配直到时间,第二个数组没有尺寸。
Option Explicit
Sub Sample()
Dim Arr1(1 To 2), Arr2()
Arr1(1) = 2: Arr1(2) = 3
Arr2 = Arr1
MsgBox Arr2(2)
End Sub
Will memory usage be doubled if I do this, or will shortArr and arr1 basically just be pointers to the same array?
是的。它们将是指向不同数组的指针。
所以我的 Excel 工作表上有两列(不相邻的)数据,条目数不同。我将他们的数据加载到两个变体中,称为 arr1 和 arr2。在接下来的处理中,我想引用条目最少和条目最多的列,所以我定义了两个Variant变量shortArr和longArr,并根据谁的Ubound()越大,给他们赋值arr1和arr2。我的问题是:
- 将一个变体分配给另一个变体是否合法,例如 "shortArr = arr1"?
- 如果是,变体是否需要首先具有相同的边界?
- 如果我这样做,内存使用量会加倍吗,或者 shortArr 和 arr1 基本上只是指向同一个数组的指针吗?
提前致谢!
如果没有循环,VBA 您想要的大部分内容都无法实现:
- Is it legal to assign one Variant to another, like "shortArr = arr1"?
- If it is, do the Variants need to have the same bounds first?
是的,这很正常。你可以分配直到时间,第二个数组没有尺寸。
Option Explicit
Sub Sample()
Dim Arr1(1 To 2), Arr2()
Arr1(1) = 2: Arr1(2) = 3
Arr2 = Arr1
MsgBox Arr2(2)
End Sub
Will memory usage be doubled if I do this, or will shortArr and arr1 basically just be pointers to the same array?
是的。它们将是指向不同数组的指针。