讓我詳細解釋它。因此,如果'id'或'f'大於0且'l'或's'是6,那麼此代碼所做的是基於參數值,然後分別計算下一次迭代中的3%(2%和1%) )的值(say = P),更新'id'和'l'爲其他值,並將其存儲在別的地方。直到'id'或'f'變爲0或'l'或's'變爲大於8時才能完成。Out of Stack在Excel中使用VBScript遞歸的錯誤
這就是它需要完成的一切。但它計算到第一個值的2%,並給出了錯誤
Function percentage(f, s, t)
Dim id, l, k, y
k = 2
id = f
l = s
y = t
If id <> 0 Then
While IsEmpty(Sheet7.Cells(k, 1).Value) = False
If Sheet7.Cells(k, 1).Value = id Then
id = Sheet7.Cells(k, 11).Value
If l = 6 Then
Sheet7.Cells(k, l).Value = 0.03 * Sheet7.Cells(y, 3).Value
l = l + 1
ElseIf l = 7 Then
Sheet7.Cells(k, l).Value = 0.02 * Sheet7.Cells(y, 3).Value
l = l + 1
ElseIf l = 8 Then
Sheet7.Cells(k, l).Value = 0.01 * Sheet7.Cells(y, 3).Value
End If
End If
k = k + 1
Wend
percentage = percentage(id, l, y)
End If
End Function
這是VBScript還是VBA?如果是VBScript,我希望看到在你的代碼中某處創建了一個Excel應用程序對象。 – YowE3K
這個函數被一個Sub調用,大部分代碼都在sub中,而且它很長..我發佈了這個函數,因爲問題在於函數not in –
'If l <9 Then'總是爲true(除非'從頭開始,'> = 9)。您可以獲得的最高'l'值是8. –