vba更好的方法将数组中的所有值设置为相同的东西

Ale*_*lec 5 excel vba excel-vba

这是个人好奇心的问题.

在VBA中,如果我有一个大小为2的数组:

Dim r(1) as Variant
Run Code Online (Sandbox Code Playgroud)

我希望数组中的两个值都为-1.我可以做这个:

r(0)=-1
r(1)=-1
Run Code Online (Sandbox Code Playgroud)

或者我可以用循环迭代它们并将它们设置为-1.

所以我的问题是,有没有什么方法可以将数组中的所有值设置为相同的东西而不进行迭代?

或者,有什么方法可以做我喜欢的事情:

r = array(-1,-1)
Run Code Online (Sandbox Code Playgroud)

这可能是一个非常愚蠢的问题,但我似乎无法找到答案.

Pra*_*mar 10

我不是很擅长画画.但这应该会给你并明确与变体数组相关的概念.

变体与变体数组


Sid*_*out 5

是的,你可以做到.但是在声明数组时你必须小心

Option Explicit

Sub Sample()
    Dim r As Variant '<~~

    r = Array(-1, -1)

    Debug.Print r(0)
    Debug.Print r(1)
End Sub
Run Code Online (Sandbox Code Playgroud)

跟进

请参阅Excel帮助文件:)数组函数返回Variant包含的内容array.您不能直接将数组分配给另一个数组.要将数组分配给另一个数组,您必须使用此方法.

Option Explicit

Sub Sample()
    Dim r(1) As Variant 
    Dim s As Variant
    Dim i As Long

    s = Array(-1, -1)

    For i = LBound(r) To UBound(r)
       r(i) = s(i)
    Next

    Debug.Print r(0)
    Debug.Print r(1)
End Sub
Run Code Online (Sandbox Code Playgroud)