如何避免出现“下标超出范围?

时间:2019-04-28 11:53:25

标签: excel vba loops fill

“下标超出范围”错误消​​息出现问题。我得到了帮助,编写了循环一长串股票的代码。该代码基本上使所有向量都均匀,因此我可以在面板数据设置中使用它。

4个股票后,循环停止,并显示“下标超出范围”错误。 我可以在前95个“ i”上运行代码,即如果我转换了第一部分:

For i = 4 To 95
        If Cells(i, 1) <> Cells(i - 1, 1) Then Clean_Stock_2 (i)

代码:

**Sub Outer_Loop()
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row**
    If Cells(i, 1) <> Cells(i - 1, 1) Then Clean_Stock_2 (i)
Next i
End Sub


Sub Clean_Stock_2(ByVal r As Long)

Dim Stock(31, 5)
Dim Quarter(31)
Dim Bo As Boolean

Charge = 0

'Frame
For i = 0 To 31
    Stock(i, 0) = Cells(r, 1)
    Stock(i, 1) = Cells(r, 2)
    Stock(i, 2) = Cells(r, 3)
    Stock(i, 5) = "Q" & Format(DateAdd("q", i, #1/1/2011#), "q-YYYY")
    Quarter(i) = Stock(i, 5)
Next i

'Data
Do While Cells(r, 1) = Stock(0, 0)
    Qu = "Q" & Format(Cells(r, 4), "q-YYYY")
    rr = Application.Match(Qu, Quarter, 0)
    If Not IsError(rr) Then
        Stock(rr, 3) = Cells(r, 4)
        Stock(rr, 4) = Cells(r, 5)
        If Not Bo Then Charge = Stock(rr, 4): Bo = True
    End If
    r = r + 1
Loop

'fill
For i = 0 To 31
    If Stock(i, 4) = 0 Then
        Stock(i, 4) = Charge
    Else
        Charge = Stock(i, 4)
    End If
Next i
'Output
lr = Cells(Rows.Count, "I").End(xlUp).Row + 1
lr = IIf(lr < 3, 3, lr)
Cells(lr, "I").Resize(32, 6) = Stock
End Sub

0 个答案:

没有答案