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

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

直接窗口中的输出是:
False
False
False
True
True
True
var1 in Sub Test2 : False

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

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

最佳答案

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

添加类似这样的东西

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

Test2

10-04 20:13