excel vba如何通过引用数组名来改变数组的内容

我正在尝试改变名为arraySrc的数组在下面的方式:

Dim arraySrc(0 To 1) As Integer arraySrc(0) = 1 arraySrc(1) = 2 Dim arrayTmp arrayTmp = arraySrc arrayTmp(0) = 0 arrayTmp(1) = 1 

实际上,我想用一个名字作为一个句柄来单独改变多个数组,例如,我有一个返回数组名的函数,然后我想设置返回的数组名称为arrayTmp,然后改变arrayTmp直接使用格式arrayTmp(0)= 0例如,希望对原始数组进行更改

但是,通过使用变体不起作用。 任何人都可以让我知道如何实现这个?

如果你想改变arraySrc值,你需要引用该数组的索引。

例如,你已经完成了。

 arraySrc(0) = 1 arraySrc(1) = 2 

仅仅因为你将arraySrc复制到arrayTmp ,后者不会保留对arraySrc的引用。

但是,如果你已经通过funtion的parameter passing了arraySrc的引用,那么这是可能的。

例如

 Option Explicit Sub myArrays() Dim arraySrc(0 To 1) As Integer arraySrc(0) = 1 arraySrc(1) = 2 '-- the referencing arrayReference arraySrc End Sub Function arrayReference(ByRef varr() As Integer) As Variant If Not IsVarArrayEmpty(varr) Then varr(0) = 0 varr(1) = 1 End If arrayReference = varr End Function '--check for empty array - additional Function IsVarArrayEmpty(anArray As Variant) As Boolean Dim i As Integer On Error Resume Next i = UBound(anArray, 1) If Err.Number = 0 Then IsVarArrayEmpty = False Else IsVarArrayEmpty = True End If End Function 

在这里输入图像说明

你的意思是这样吗? ByRef参数意味着作为parameter passing的源数组也将被改变:

 Sub test() Dim arraySrc(0 To 1) As Integer arraySrc(0) = 1 arraySrc(1) = 2 PassByRef arraySrc Debug.Print arraySrc(0) Debug.Print arraySrc(1) End Sub Sub PassByRef(ByRef arrayTmp() As Integer) arrayTmp(0) = 0 arrayTmp(1) = 1 End Sub