2012-11-09 31 views
3

消失我有大致如下的行一些代碼:VBA溢出錯誤中斷模式

redim a(1 to N) 
for i = 1 to N 
    a(i) = someFunction(i) 
Next i 

當運行它,我得到"Run-time error 6: Overflow"。然後它進入循環內部的線路的中斷模式:突出顯示a(i) = someFunction(i)。爲了找到這個錯誤,我進入該功能並逐行進行。沒有錯誤,它工作正常,並繼續前進。只要我這樣執行代碼,一直處於休息模式&一次調用someFunction,它工作,但只要我回到正常執行,溢出錯誤就會回來。

有誰知道我該如何擺脫溢出?

+0

a(i)','i'和'someFunction(i)'在暫停時的值是多少?只需將鼠標光標移到VBE中的變量名稱上即可。 –

+0

你在行中移動嗎?如果你是 – Brad

+1

,行計數器應該聲明爲'Long'。是的,我會說,你可能沒有得到溢出錯誤,因爲當你正在調試時,你不會完全通過代碼。 salih0vicX的回答是問題的可能原因。這也可以解釋爲什麼你不能在調試時重現錯誤,因爲在發現溢出錯誤之前,需要32,767次迭代。 –

回答

1

您應該提供整個函數,以便我們可以看到您聲明變量的方式。

錯誤是由錯誤的變量聲明引起的。一個或多個變量沒有能力接受該值(例如:將變量i聲明爲Integer,因此它不能接受像這樣的值:i = 55000;整數的最大值在32000到32800之間)...

+1

該幻數是32767.有符號的16位整數範圍從-2^15到2^15-1。 –

0

感謝大家的幫助,我想出了問題所在。這是在someFunction導致溢出的東西,我不知道爲什麼它不會發生在休息模式,但我解決了什麼是造成它,現在它的工作。