将数组分配给一行中的另一个数组

时间:2018-03-13 17:21:41

标签: arrays vba function

我是VBA的新手,我似乎无法找到一个非常简单的概念 - 将一个数组分配给另一个数组,两者的大小和类型相同。就像在这个例子中一样:

Option Explicit

Sub main()
    Dim arr1(2), arr2(2) As Double

    arr1(0) = 5
    arr1(1) = 10

    arr2 = arr1 'error here

    Debug.Print arr2(0)
    Debug.Print arr2(0)
End Sub

运行此命令会返回错误

  

“无法分配到数组”

现在,我知道我可以使用For循环迭代每个元素,但在某些高级情况下,使用它是不切实际的 - 例如,我有一个返回数组的缓慢加载函数,因此,我只想运行它一次,获取它的整个返回值并分配给其他一些数组,如下所示:

arr1 = Very_Slow_Function_That_Returns_An_Array()

但显然,这也不会起作用,并会产生同样的错误。那么,可以做些什么呢?有人可以提供一些关于如何将整个数组分配给另一个数组而不必迭代每个元素的建议吗?

2 个答案:

答案 0 :(得分:2)

您可以在VBA中将数组分配给另一个数组:

Option Explicit

Sub main()

Dim arr1 As Variant
Dim arr2 As Variant

arr1 = Array(5, 10)

'Assign array1 to array2
arr2 = arr1

Debug.Print arr1(0)
Debug.Print arr2(0)
End Sub

答案 1 :(得分:1)

这些变化有效:

df

pd.DataFrame({'date':dates})

最接近OP代码的第三种变体:

Sub main()

    Dim arr1() As Double, arr2() As Double

    ReDim arr1(0 To 1)
    arr1(0) = 5
    arr1(1) = 10

    arr2 = arr1

End Sub