5

这是个人好奇的问题。

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

Dim r(1) as Variant

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

r(0)=-1
r(1)=-1

或者我可以使用循环遍历两者并将它们设置为-1。

所以我的问题是,有什么方法可以将数组中的所有值设置为相同的值而无需迭代?

或者,有什么办法我可以做类似的事情:

r = array(-1,-1)

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

4

2 回答 2

9

我不太擅长画图。但这应该让您清楚与变体数组相关的概念。

变体与变体数组

于 2012-05-22T20:21:33.020 回答
5

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

例子

Option Explicit

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

    r = Array(-1, -1)

    Debug.Print r(0)
    Debug.Print r(1)
End Sub

跟进

请参阅 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
于 2012-05-22T15:15:01.240 回答