共用方式為


堆疊空間不足 (錯誤 28)

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

  • 你有 太多活躍的功能屬性 程序呼叫。 檢查 程序不會被 嵌套得太深。 這在遞迴程序中尤其如此,也就是那些自我稱為 的程序。 確保遞迴程序正確終止。 使用 呼叫 對話框查看堆疊) (哪些程序是啟用的。

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

    試著在 模組層 級宣告一些變數。 你也可以在 PropertySubFunction 關鍵字前加上 Static,宣告程序中的所有變數為靜態。 或者你可以使用 Static 陳述式來宣告程序內的個別 Static 變數。

  • 你用的固定長度弦太多了。 程序中固定長度字串的存取速度較快,但使用堆疊空間比可變長度字串多,因為字串資料本身會放在堆疊上。 試著把一些固定長度的字串重新定義成可變長度的字串。 當你在程序中宣告可變長度字串時,只有字串描述符 (資料本身) 會放在堆疊上。 你也可以在模組層級定義字串,不需要堆疊空間。 模組層級宣告的變數預設為 Public ,因此該字串對模組中的所有程序皆可見。

  • 你有太多巢狀的 DoEvents 函式呼叫。 使用 呼叫 對話框查看堆疊中哪些程序是啟用的。

  • 你的程式碼觸發了事件連鎖反應。 事件級聯是因為觸發一個事件,呼叫堆疊中已經存在的事件程序而引起。 事件級聯類似於未終止的遞迴程序呼叫,但較不明顯,因為呼叫是由 Visual Basic 執行,而非程式碼中的明確呼叫。 使用 呼叫 對話框查看堆疊) (哪些程序是啟用的。

要顯示呼叫對話框,請在除錯視窗中程序右側選擇呼叫按鈕,或選擇呼叫指令。 如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。

支援和意見反應

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