Chuyển đến nội dung chính

Hướng dẫn thêm DoEvents và Application.Wait vào vòng lặp trong VBA để tránh hệ thống bị treo


Hướng dẫn thêm DoEventsApplication.Wait vào vòng lặp trong VBA để tránh hệ thống bị treo

Trong quá trình làm việc với VBA, đặc biệt là khi sử dụng các vòng lặp lớn hoặc phức tạp, bạn có thể gặp phải tình huống hệ thống bị treo. Điều này xảy ra khi vòng lặp của bạn yêu cầu quá nhiều tài nguyên từ hệ thống mà không cho phép các sự kiện khác được xử lý. Kết quả là hệ thống có thể không phản hồi, gây ra tình trạng gián đoạn hoặc thậm chí là treo máy.

Để giải quyết vấn đề này, bạn có thể sử dụng hai phương pháp đơn giản: DoEventsApplication.Wait. Bài viết này sẽ hướng dẫn bạn cách thêm hai dòng lệnh này vào mã VBA của mình để đảm bảo rằng hệ thống không bị treo trong khi thực hiện các vòng lặp.

1. Sử dụng DoEvents để xử lý các sự kiện khác

DoEvents là một hàm trong VBA cho phép hệ thống xử lý các sự kiện khác như click chuột, gõ phím, hoặc các hành động từ hệ điều hành. Khi bạn gọi DoEvents trong vòng lặp, VBA sẽ tạm thời dừng việc thực thi mã để xử lý các sự kiện đang chờ, giúp hệ thống trở nên linh hoạt hơn.

Ví dụ cơ bản:

Sub ExampleWithDoEvents()
    Dim i As Long
    For i = 1 To 1000000
        ' Thực hiện một số thao tác
        DoEvents ' Cho phép hệ thống xử lý các sự kiện khác
    Next i
End Sub

2. Sử dụng Application.Wait để tạo độ trễ

Application.Wait là một phương pháp khác để giúp hệ thống có thời gian xử lý các sự kiện. Phương pháp này sẽ tạm dừng thực thi mã trong một khoảng thời gian nhất định, cho phép hệ thống thực hiện các tác vụ khác.

Ví dụ, để tạo độ trễ 1 giây trong vòng lặp, bạn có thể sử dụng:

Sub ExampleWithWait()
    Dim i As Long
    For i = 1 To 1000000
        ' Thực hiện một số thao tác
        Application.Wait (Now + TimeValue("00:00:01")) ' Dừng 01 giây
    Next i
End Sub

3. Kết hợp DoEventsApplication.Wait

Trong một số trường hợp, bạn có thể kết hợp cả hai phương pháp trên để đạt được hiệu quả tốt nhất, đảm bảo rằng vòng lặp không chỉ cho phép hệ thống xử lý các sự kiện khác mà còn có thời gian nghỉ ngơi giữa các lần lặp.

Ví dụ:

Sub ExampleWithDoEventsAndWait()
    Dim i As Long
    For i = 1 To 1000000
        ' Thực hiện một số thao tác
        DoEvents ' Xử lý các sự kiện khác
        Application.Wait (Now + TimeValue("00:00:01")) ' Dừng 01 giây
    Next i
End Sub

4. Khi nào nên sử dụng DoEventsApplication.Wait?

  • Sử dụng DoEvents: Khi bạn muốn hệ thống tiếp tục phản hồi các sự kiện khác trong khi vòng lặp đang chạy. Điều này đặc biệt hữu ích khi bạn cần làm việc với giao diện người dùng hoặc cần đảm bảo rằng hệ thống vẫn hoạt động ổn định.

  • Sử dụng Application.Wait: Khi bạn muốn tạo một khoảng thời gian nghỉ giữa các lần lặp. Điều này có thể hữu ích khi bạn cần giảm tải cho hệ thống hoặc muốn chờ một số điều kiện cụ thể được đáp ứng trước khi tiếp tục.

Kết luận

Sử dụng DoEventsApplication.Wait trong VBA là những cách hiệu quả để tránh tình trạng hệ thống bị treo khi thực hiện các vòng lặp lớn. Bằng cách thêm các dòng lệnh này vào mã của bạn, bạn có thể đảm bảo rằng hệ thống vẫn hoạt động ổn định và có thể xử lý các sự kiện khác mà không gặp phải tình trạng gián đoạn.


Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về cách sử dụng DoEventsApplication.Wait trong VBA để tối ưu hóa hiệu suất và tránh tình trạng hệ thống bị treo.

Nếu bài viết này hữu ích, anh em có thể mời mình cốc sinh tố lúa mạch theo số tài khoản TPBank 3355 3618 888 (quét QR). Để tạo ra 1 bài viết, mình mất trung bình 6-8 tiếng. Một sự ủng hộ hơn ngàn lời khích lệ, để mình có thể duy trì trang web và tạo ra nhiều bài viết chất lượng hơn. Trân trọng cảm ơn tình cảm của anh em!

Nhận xét

Bài đăng phổ biến từ blog này

Cách tra cứu thông tin cá nhân qua số CCCD hoặc Mã số thuế trên Excel

Trong bài viết này, mình sẽ hướng dẫn bạn cách tra cứu họ tên và địa chỉ từ số CCCD/ hoặc mã số thuế cá nhân (MST) trên Excel. Đây là cách tra cứu nhanh chóng, tiện lợi, giúp bạn tiết kiệm được thời gian và công sức. 1. Tìm hiểu về CCCD/ MST cá nhân Căn cước công dân (CCCD) là một loại giấy tờ tùy thân rất quan trọng của tất cả công dân Việt Nam, được cơ quan Công an cấp. Mỗi CCCD có một mã QR code riêng, chứa tất cả các thông tin cá nhân của công dân, giúp cho việc xác thực danh tính công dân được nhanh chóng, chính xác hơn. Mã số thuế cá nhân (MST) là một mã số do Cơ quan quản lý thuế cấp cho mỗi cá nhân đăng ký thuế khi họ thực hiện nghĩa vụ nộp thuế vào Ngân sách nhà nước. 2. Hướng dẫn tra cứu số CCCD/ MST ra họ tên và địa chỉ trên Excel Bước 1. Tải BuilderTV Add-in tại đây . Bước 2. Sử dụng các hàm sau để tra cứu họ tên và địa chỉ: - Hàm hoTen(Số_CCCD/MST) để tra cứu Họ tên của người có số CCCD/ MST cần tra cứu. - Hàm diaChi(Số_CCCD/MST) để tra cứu Địa chỉ của người có số CCCD...

Hướng Dẫn Xóa Các Style Tùy Chỉnh Trong Word Bằng VBA

  Hướng Dẫn Xóa Các Style Tùy Chỉnh Trong Word Bằng VBA Khi làm việc với các tài liệu Word tải về, bạn có thể gặp phải tình trạng tài liệu chứa quá nhiều Style tùy chỉnh không cần thiết, khiến việc định dạng trở nên rối rắm. Bài viết này sẽ hướng dẫn bạn cách xóa toàn bộ các Style tùy chỉnh và chỉ giữ lại các Style mặc định của Word bằng cách sử dụng VBA (Visual Basic for Applications). Bước 1: Kích hoạt Developer Tab trong Word Trước khi sử dụng VBA, bạn cần kích hoạt tab Developer : Mở Word . Vào File > Options . Trong cửa sổ Word Options , chọn Customize Ribbon . Trong danh sách bên phải, đánh dấu vào ô Developer và bấm OK . Bước 2: Mở VBA Editor Nhấn Alt + F11 để mở VBA Editor . Trong cửa sổ VBA, vào menu Insert > Module để tạo một module mới. Bước 3: Dán đoạn mã VBA Dán đoạn mã sau vào module mới: Sub DeleteCustomStyles() Dim s As Style For Each s In ActiveDocument.Styles If Not s.BuiltIn Then On Error Resume Next s.Delete ...