Đồng ý.
Tôi thấy rằng khi bạn tắt ScreenUpdating
, Calculation
, tốt nhất là nên suy nghĩ về cách thực hiện càng nhiều công việc (viết, đọc, sự kiện, ...) càng ít càng tốt cho số điện thoại ScreenUpdating
. Điều này sẽ tăng tốc độ hoạt động đồng thời cung cấp cho người dùng trải nghiệm tốt hơn và dễ chịu hơn. Ví dụ: giả sử bạn muốn ghi một số dữ liệu vào trang tính càng nhanh càng tốt.Bạn có thể làm điều này:
For Each row In rowDic.Keys()
' turn off updating
for item in rowDic.Key(row)
... do some writes
Next
' turn on updating
Next
hoặc để đi nhanh hơn bạn có thể làm điều này:
' turn off updating
For Each row In rowDic.Keys()
for item in rowDic.Key(row)
... do some writes
Next
Next
' turn on updating
Tương tự như vậy, khi ghi dữ liệu, đó là nhanh nhất để viết khối lớn hơn, thời gian ít hơn. do đó, số lượng viết lý tưởng, nếu có, là một. Bạn có thể thực hiện việc này bằng cách xử lý Range
dưới dạng 2D array[rows,cols]
. Tôi đã tìm thấy những điều sau đây để có hiệu quả:
' turn off updates
' Organise data in ram so that it fits the range for which it is meant
Dim two_d_arr (rows,cols)
loadDataFromSource two_d_arr
Dim destinationRange as Range
destinationRange = Sheets(someSheet).Range(someRange).Value = two_d_arr
Redim two_d_arr(0,0) ' !!! RELEASE MEMORY
' turn on updates
Ở đây, không có vòng, điều này sẽ tối ưu hóa thời gian mỗi công việc của cá nhân trong CPU mà kết quả trong thời gian xử lý nhanh hơn và lần lượt dường như làm cho excel làm việc bình thường (không sụp đổ).
HTH,
F
DisplayAlerts không liên quan đến nhanh như thế nào chương trình chạy, nó sẽ chỉ ngăn chặn Excel cảnh báo mặc định (ví dụ khiến để xác nhận xóa bảng), mà bạn có thể hoặc không muốn ngăn chặn. (Tôi đoán về mặt kỹ thuật nó sẽ làm cho nó chạy nhanh hơn vì sẽ không có hộp thoại, nhưng bạn biết những gì tôi có ý nghĩa). – goggin13