VBA - 无意中在一个数组中创建了一个数组

VBA - Unintentionally creating an array within an array

下面是我正在编写的一些代码的摘录,这些代码试图将进程开始时的范围(在 sheet 激活事件的全局数组中捕获)与 sheet 已停用。

这里是激活码:

Private Sub Worksheet_Activate()

garr_Agency = Array(Range("rng_Lst_Agencies").Value2) 'rng_Lst_Agencies is a 1D column.

End Sub

这里是停用:

Private Sub Worksheet_Deactivate()

Dim arr_Agency() As Variant
Dim rng_Agency As Range
Dim lng_Agencies As Long
Dim lng_i As Long

Set rng_Agency = Range("rng_Lst_Agencies")

arr_Agency = Array(rng_Agency.Value2)

lng_Agencies = rng_Agency.Cells.Count
lng_i = 1

Do Until lng_i = lng_Agencies + 1
            If arr_Agency(0)(lng_i, 1) <> garr_Agency(0)(lng_i, 1) Then 
*rest of the code*

我原以为我可以使用:

If arr_Agency(lng_i, 1) <> garr_Agency(lng_i, 1) Then

但我收到 "Subscript out of range" 错误。

为什么我需要添加额外的“(0)”?从当地人看来 window 看起来好像我已经在沿线某处的数组中创建了一个数组,但我不知道怎么做。

非常感谢。

您获得嵌套数组的原因是因为这一行:

arr_Agency = Array(rng_Agency.Value2)

改为这样做:

arr_Agency = rng_Agency.Value2

这将创建一个一维数组,因为当您分配给一个变体时,它会自动被视为一个数组。