一、案例定位

以來源 ThisWorkbook.Worksheets(...)、ThisWorkbook 與 Application.ScreenUpdating 教學工作表、活頁簿與應用程式層級物件。

二、學習目標

避免依賴目前選取工作表;理解 Workbook、Worksheet、Application 的層級;在程序結束前恢復應用程式設定。

三、案例情境

薪酬程序必須寫到指定完成案例工作表,即使使用者目前停在其他工作表,也不應寫錯位置。

四、開始資料

來源手動解法明示:Set ws = ThisWorkbook.Worksheets("18_完成案例"),並示範 Application.ScreenUpdating 控制。

五、Excel 分析方法

先 Set ws;所有 Cells/Range 盡量以 ws. 限定;大量寫入前 Application.ScreenUpdating=False,結束前恢復 True。

六、計算結果

這類物件操作不改變來源 8 人的數值結果;其作用是確保 8 筆既有結果被寫到正確工作表,且程序執行過程穩定。

七、結果分析與管理解讀

ThisWorkbook 指含 VBA 程式碼的活頁簿;明確指定 ws 比 ActiveSheet 更可維護。ScreenUpdating 關閉後若未恢復,使用者介面可能保持不刷新狀態。

八、AI Prompt

「請審查這段 VBA 是否所有 Range/Cells 都限定在指定 Worksheet,並確認 ScreenUpdating 在正常結束與錯誤處理時都會恢復。」

九、思考/What-if

問題:如果程式改用 ActiveSheet.Cells(...),而使用者執行前停在錯的工作表,風險是什麼?

精簡解答: 結果可能被寫到錯誤工作表;來源建議用 ThisWorkbook.Worksheets(...) 正是為了避免此依賴。

十、資料說明