共用方式為


堆疊空間不足 (錯誤 28)

堆疊是記憶體的工作區域,會隨著執行程式的需求動態成長和縮小。 此錯誤發生的原因與解決方案如下:

  • 您有太多作用中的 函式屬性 程序呼叫。 檢查 程式 的巢狀結構是否太深。 遞迴程式尤其如此,也就是呼叫自己的程式。 請確定遞迴程式會正確終止。 使用 [ 呼叫 ] 對話方塊,即可檢視堆疊) 上作用中 (的程式。

  • 您的局部 變數 需要比可用更多的區域變數空間。

    請嘗試改為在 模組層級 宣告一些變數。 您也可以在Property、Sub或 Function關鍵字前面加上Static,以靜態宣告程式中的所有變數。 或者,您可以使用 Static 語句在程式內宣告個別 的靜態 變數。

  • 您的固定長度字串太多。 程式中的固定長度字串會更快速地存取,但使用比可變長度字串更多的堆疊空間,因為字串資料本身會放在堆疊上。 請嘗試將部分固定長度字串重新定義為可變長度字串。 當您在程式中宣告可變長度字串時,只有字串描述項 (不會將資料本身) 放在堆疊上。 您也可以在不需要堆疊空間的模組層級定義字串。 在模組層級宣告的變數預設為 用,因此模組中的所有程式都會看到字串。

  • 您有太多巢狀 DoEvents 函式呼叫。 使用 [ 呼叫 ] 對話方塊來檢視堆疊上作用中的程式。

  • 您的程式碼觸發了事件串聯。 事件串聯的原因是觸發事件,該事件會呼叫已經在堆疊上的事件程序。 事件串聯類似于未結束的遞迴程序呼叫,但較不明顯,因為呼叫是由 Visual Basic 進行,而不是由您程式碼中的明確呼叫進行。 使用 [ 呼叫 ] 對話方塊,即可檢視堆疊) 上作用中 (的程式。

若要顯示 [呼叫] 對話方塊,請選取 [偵錯] 視窗中 [程式] 方塊右側的 [呼叫] 按鈕,或選擇 [呼叫]命令。 如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應