如何永久更改数组中变量的值?我写了一些代码来说明我的问题:
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