出栈空间vba excel

和我无法解决这个错误..我已经尝试在线search,但似乎无法find解决这个问题所需的解决scheme。 它显示“超出堆栈”错误(运行时错误'28')。 有人可以帮忙吗?

Option Explicit Dim ws As Sheets Dim i As Integer, j As Integer Public Function test1(i, j) Set ws = Sheets(Array("Sheet1", "Sheet2")) With Application.WorksheetFunction test1(i, j) = .Index(ws(2).Range("B2:D5"), .Match(ws(1).Range("A" & i), ws(2).Range("A2:A5"), 0), .Match(ws(1).Range("B" & j), ws(2).Range("B1:D1"), 0)) End With End Function Sub Xecute() Set ws = Sheets(Array("Sheet1", "Sheet2")) For i = 5 To 13 Step 4 For j = 5 To 16 test1(i, j) = ws(1).Range("C" & j).Value Next j Next i End Sub 

我更正的代码:

 Option Explicit Dim ws As Sheets Dim i As Integer, j As Integer, p As Integer, q As Integer Public Function test1(i, j) Set ws = Sheets(Array("Sheet1", "Sheet2")) With Application.WorksheetFunction test1 = .Index(ws(2).Range("B2:D5"), .Match(ws(1).Range("A" & i), ws(2).Range("A2:A5"), 0), .Match(ws(1).Range("B" & j), ws(2).Range("B1:D1"), 0)) End With End Function Sub Xecute() Set ws = Sheets(Array("Sheet1", "Sheet2")) For i = 5 To 13 Step 4 For j = 5 To 16 ws(1).Range("C" & j).Value = test1(i, j) Next j Next i End Sub 

当您将大数量的variables赋值超过其可容纳的值时,会导致“超出堆栈”错误。 例如, i and J are decalred as integer ,但是它所保存的值可能比32000或更多。 所以尝试将variables声明为double or variant