彰化一整天的論壇

 找回密碼
 立即註冊
查看: 217|回復: 2

[分享]加速vba在迴圈填入儲存格的速度

[複製鏈接]
發表於 2019-5-3 22:43:06 | 顯示全部樓層 |閱讀模式
最近幫公司寫一個小的外掛程式, 程式內有迴圈, 並將資料表內的資料依條件分別填入12個Sheet
但發現非常的慢, 填完要28分鐘, 當然除了程式本身撰寫的方式也有很大的問題, 後來我改寫了程式, 時間並沒有改善太多
後來上網找了一下, 原來是要設定 Application.ScreenUpdating = False
但經過測試, 也沒有好到哪去, 因為發現, 工作表內有一些不得不使用的 vlook 函數及 index 等等會影響速度的作法
最後找出, 完整的設定, 僅需 18秒就完成的神速速度, 有速度問題的人可以參考看看

以下是我最終高效的設定, 分享給大家, 順便做個記錄


  1. Application.Calculation = xlCalculationManual '關閉自動計算
  2. Application.EnableEvents = False '  禁止觸發事件 :
  3. Application.Interactive = False '  禁止交互模式 :
  4. Application.ScreenUpdating = False ' 關閉螢幕更新
  5. Application.StatusBar = False '關閉狀態列
  6. '
  7. '
  8. runMode = 前月Data() ' 我的程式
  9. runMode = 當月Data() ' 我的程式
  10. '
  11. '
  12. Application.Calculation = xlCalculationAutomatic ' 開啟自動計算
  13. Application.EnableEvents = True
  14. Application.Interactive = True
  15. Application.ScreenUpdating = True
  16. Application.StatusBar = True
複製代碼



回復

使用道具 舉報

發表於 2019-5-9 11:16:28 | 顯示全部樓層
奇怪,我在 Application.Interactive = True 這邊會錯誤。
回復 支持 反對

使用道具 舉報

 樓主| 發表於 2019-5-10 13:39:24 | 顯示全部樓層
本帖最後由 goodnight 於 2019-5-10 13:44 編輯
louiswei1986 發表於 2019-5-9 11:16
奇怪,我在 Application.Interactive = True 這邊會錯誤。

excel 2007 sp3 嗎?
Application.Interactive = False 沒問題嗎?

參考看看 (關鍵字 application.interactive not working)

https://docs.microsoft.com/en-us ... ication.interactive
https://stackoverflow.com/questi ... eractive-true-fails

回復 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

 ㄚ母滴雞湯
 員林香純滴雞精

Archiver|手機版|小黑屋|彰化一整天的論壇(Excel,Office)  |网站地图

GMT+8, 2019-7-21 00:51 , Processed in 0.125756 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表