當前位置:成語大全網 - 書法字典 - Excel VBA運行越來越慢,如何加速?

Excel VBA運行越來越慢,如何加速?

我看到問題了。當數據量很大的時候,隱藏操作會很慢。有兩種方法可以加快速度:

第壹點很簡單。對於i=11 ti h循環,不檢查單元格,而是先將第五列的內容存儲在數組中,檢查是否應該隱藏在數組中。隱藏的算法也進行了優化,即根據是否相等來判斷是否隱藏在變量X中,然後檢測那壹行的狀態是否與X相同,只有不同時,減少處理次數。優化後的代碼如下:

選項?明確的

私人?Sub?工作表_更改(ByVal?目標?作為?範圍)

暗淡?s,?h,?我,?啊?x

如果?目標。地址?=?範圍(“P5”)。地址?然後

s?=?範圍(“P5”)。價值

h?=?使用範圍。行數。計數

如果?(修剪)?=?“全部”?還是?修剪?=?"")?然後

Rows("10:"?& amp?h)。隱藏?=?錯誤的

其他

申請。屏幕更新?=?錯誤的

arr?=?範圍(單元格(1,5),?細胞(h,?5))

為了什麽?我?=?11?去哪?h

x?=?arr(我,?1)?& lt& gt?s

如果?行(I)。隱藏?& lt& gt?x?然後呢?行(I)。隱藏?=?x

然後

申請。屏幕更新?=?真實的

結束?如果

結束?如果

結束?Sub上面的代碼通過從數組判斷來減少取數時間,在隱藏/顯示行之前檢查狀態應該有壹定效果,減少處理時間。

代碼還可以進壹步優化,逐行掃描隱藏顯示的操作還是很費時間的。進壹步優化的思路是壹片壹片的加工。比如從上萬行中篩選出只需要顯示幾行(極端的壹行)的時候,在最佳狀態下只需要執行三次:第壹段隱藏,中間段顯示,最後段隱藏,這樣就可以把上萬次的表格界面操作減少到三次,效果大大增強。但是代碼會很長很復雜,會用壹系列變量來記錄當前行應該隱藏還是顯示,但不會馬上處理,繼續判斷下壹行;如果要求的加工與上壹個相同,記錄要加工的範圍,繼續下壹行判斷;如果所需的處理與之前的不同,執行之前的操作並重新記錄。