Cập nhật màn hình VBA | Tăng tốc quá trình chạy mã

Cập nhật màn hình Excel VBA

Cập nhật màn hình VBA là một thuộc tính được sử dụng để tránh hoặc ngăn chặn sự phân tâm nhấp nháy trong khi chạy mã và làm cho mã nhanh hơn bằng cách tắt Cập nhật màn hình. Chúng tôi có thể tắt cập nhật màn hình bằng cách đặt thuộc tính này là false.

Thông thường, chúng ta có thể cảm thấy màn hình excel trở nên điên cuồng trong khi macro đang chạy và chúng ta gần như cảm thấy thất vọng vì điều đó. Nhưng làm thế nào để chúng ta đối phó với những tình huống này và làm cho mã chạy nhanh hơn những điều chậm chạp thông thường?

Cập nhật màn hình là điều chúng ta có thể nhận thấy khi macro excel đang chạy. Khi tác vụ đang thực thi, chúng ta có thể nhận thấy màn hình của chúng ta đang cập nhật các giá trị cho đến khi macro hoàn thành nhiệm vụ được giao. Khi màn hình của chúng ta nhấp nháy hoặc làm mới, nó dẫn đến chương trình excel chạy chậm và mất nhiều thời gian hơn bình thường để hoàn thành tác vụ.

Trong VBA, chúng tôi có một thuộc tính gọi là “ScreenUpdating” và chúng tôi đặt thuộc tính này thành FALSE để nó sẽ loại bỏ quá trình cập nhật màn hình trong khi mã đang chạy.

Trong bài viết này, chúng ta sẽ tạm biệt việc xem phim hành động trên màn ảnh trong khi mã đang chạy. Hôm nay bạn sẽ làm cho mã của bạn chạy nhanh hơn và nhanh hơn so với thời gian bình thường của bạn.

Khi nào sử dụng Tính năng cập nhật màn hình?

Nếu bạn có bất kỳ nghi ngờ khi sử dụng kỹ thuật này. Nhìn vào những điểm dưới đây.

  • Khi bạn đang lặp qua một số lượng lớn các ô.
  • Gửi email từ Excel VBA.
  • Chuyển đổi giữa các sổ làm việc excel.
  • Mở sổ làm việc mới.

Làm cách nào để sử dụng Tính năng cập nhật màn hình trong Mã VBA?

Bạn có thể tải xuống Mẫu Excel cập nhật màn hình VBA này tại đây - Mẫu Excel cập nhật màn hình VBA

Ví dụ # 1 - Tắt cập nhật màn hình

Để biết ví dụ, hãy xem đoạn mã dưới đây.

Mã:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long MyNumber = 0 For RowCount = 1 To 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). Chọn Ô (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount End Sub 

Ở trên có vòng lặp VBA lồng nhau để chèn số sê-ri từ cột đầu tiên đến cột thứ 50 và một lần nữa quay lại và chèn số sê-ri bắt đầu từ 51 từ hàng thứ hai đến cột thứ 50.

Như thế này, nó sẽ chèn cho đến khi nó đạt đến hàng thứ 50.

Trong khi mã này đang chạy, bạn có thể nhận thấy màn hình của mình nhấp nháy và bạn không thể làm gì ngoài việc xem khoảnh khắc điên rồ này.

Để tránh tất cả những điều này, chúng ta có thể thêm Cập nhật màn hình thành FALSE.

Để truy cập tính năng Cập nhật màn hình trước tiên chúng ta cần truy cập vào đối tượng Ứng dụng.

Như chúng ta thấy với đối tượng Application, chúng ta có nhiều thuộc tính và phương thức. Vì vậy, hãy chọn Cập nhật màn hình từ danh sách IntelliSense.

Lưu ý: Bạn phải áp dụng tính năng Cập nhật màn hình ngay sau khi khai báo các biến.

Sau khi chọn thuộc tính Cập nhật màn hình, hãy đặt dấu bằng (=).

Như chúng ta có thể thấy hai giá trị Boolean tức là FALSE & TRUE.

Để dừng cập nhật màn hình, hãy đặt trạng thái thành FALSE.

Bây giờ, khi macro bắt đầu chạy trước tiên, nó sẽ cập nhật trạng thái cập nhật màn hình thành FALSE và chuyển sang dòng tiếp theo.

Vì macro được thực thi Cập nhật màn hình thành FALSE, nó sẽ không cho phép màn hình cập nhật trong khi mã đang thực hiện tác vụ của nó.

Ví dụ # 2 -

Luôn đặt Cập nhật màn hình thành ĐÚNG ở cuối

Tôi đã thấy nhiều người đặt Cập nhật màn hình thành FALSE nhưng lại quên đặt nó trở lại TRUE ở cuối macro.

Luôn đặt Cập nhật màn hình trở lại TRUE ở cuối macro.

Mã:

 Sub Screen_Updating () Dim RowCount As Long Dim ColumnCount As Long Dim MyNumber As Long Application.ScreenUpdating = False MyNumber = 0 For RowCount = 1 To 50 For ColumnCount = 1 To 50 MyNumber = MyNumber + 1 Cells (RowCount, ColumnCount). (RowCount, ColumnCount) .Value = MyNumber Next ColumnCount Next RowCount Application.ScreenUpdating = True End Sub 

$config[zx-auto] not found$config[zx-overlay] not found