VBA:更改数组中变量的值

Ale*_*lex 7 arrays excel vba

如何永久更改数组中变量的值?我写了一些代码来说明我的问题:

Option Explicit
    Dim var1 As Boolean, var2 As Boolean, var3 As Boolean

Sub Test()
    Dim arrTest As Variant
    Dim i

    arrTest = Array(var1, var2, var3)

    For Each i In arrTest
        Debug.Print i
    Next

    For i = LBound(arrTest) To UBound(arrTest)
        arrTest(i) = True
    Next

    For Each i In arrTest
        Debug.Print i
    Next

    Test2
End Sub


Sub Test2()
    Debug.Print "var1 in Sub Test2 : " & var1
    If var1 Then
        Debug.Print "Hello"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)

直接窗口中的输出为:

False
False
False
True
True
True
var1 in Sub Test2 : False
Run Code Online (Sandbox Code Playgroud)

前六行对我来说很有意义,因为我更改了中的变量值Test。但是,它显然不是永久性的,或者仅限于一个子,因此Test2未打印出“ Hello” 。

我该如何改变?我已经读过for each循环是只读的,但是for-loop 为什么不起作用?

Tea*_*thy 6

为数组的每个元素分配“ True”不会使变量具有相同的值。奇怪的是var1仍然为False,因为您没有更改var1的值,而是数组元素的值。:)

添加类似这样的东西

var1 = arrTest(0)
var2 = arrTest(1)
var3 = arrTest(2)

Test2
Run Code Online (Sandbox Code Playgroud)