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 .

    Однако это возможно, если вы передали ссылку arraySrc через параметр funtion.

    например

     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 означает, что исходный массив, переданный как параметр, также будет изменен:

     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 
    Давайте будем гением компьютера.