堆疊是一個記憶體的工作區域,會隨著執行程式的需求動態成長或縮小。 此錯誤發生的原因與解決方案如下:
你有 太多活躍的功能、 子或 屬性 程序呼叫。 檢查 程序不會被 嵌套得太深。 這在遞迴程序中尤其如此,也就是那些自我稱為 的程序。 確保遞迴程序正確終止。 使用 呼叫 對話框查看堆疊) (哪些程序是啟用的。
你的局部 變數 需要比可用的更多的區域變數空間。
試著在 模組層 級宣告一些變數。 你也可以在 Property、 Sub 或 Function 關鍵字前加上 Static,宣告程序中的所有變數為靜態。 或者你可以使用 Static 陳述式來宣告程序內的個別 Static 變數。
你用的固定長度弦太多了。 程序中固定長度字串的存取速度較快,但使用堆疊空間比可變長度字串多,因為字串資料本身會放在堆疊上。 試著把一些固定長度的字串重新定義成可變長度的字串。 當你在程序中宣告可變長度字串時,只有字串描述符 (資料本身) 會放在堆疊上。 你也可以在模組層級定義字串,不需要堆疊空間。 模組層級宣告的變數預設為 Public ,因此該字串對模組中的所有程序皆可見。
你有太多巢狀的 DoEvents 函式呼叫。 使用 呼叫 對話框查看堆疊中哪些程序是啟用的。
你的程式碼觸發了事件連鎖反應。 事件級聯是因為觸發一個事件,呼叫堆疊中已經存在的事件程序而引起。 事件級聯類似於未終止的遞迴程序呼叫,但較不明顯,因為呼叫是由 Visual Basic 執行,而非程式碼中的明確呼叫。 使用 呼叫 對話框查看堆疊) (哪些程序是啟用的。
要顯示呼叫對話框,請在除錯視窗中程序框右側選擇呼叫按鈕,或選擇呼叫指令。 如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。