下面是我正在编写的一些代码的摘录,这些代码试图将流程开始时的范围(在工作表激活事件中捕获在全局数组中)与工作表停用时的范围进行比较。
这是激活代码:
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
但是出现“下标超出范围”错误。
为什么我需要添加额外的“(0)”?从“本地”窗口中,好像我已经沿着直线在某个数组中创建了一个数组,但是我不知道如何。
非常感谢。
答案 0 :(得分:0)
获得嵌套数组的原因是由于以下这一行:
arr_Agency = Array(rng_Agency.Value2)
执行此操作:
arr_Agency = rng_Agency.Value2
这将创建一维数组,因为当您将变量分配给变量时,它会自动被视为数组。