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...

Cách xoá Logo CamScanner miễn phí!

  CamScanner là gì ? CamScanner là một ứng dụng quét tài liệu chuyên nghiệp trên thiết bị di động. Ứng dụng này cho phép người dùng quét, scan, chỉnh sửa và quản lý tài liệu, văn bản, giấy tờ. Với CamScanner, người dùng có thể dễ dàng quét, chỉnh sửa và quản lý tài liệu trên điện thoại của mình. Ứng dụng này rất hữu ích cho việc quản lý và chia sẻ tài liệu, được sử dụng rộng rãi trong các lĩnh vực khác nhau như kinh doanh, giáo dục, tài chính và văn phòng. Các bước xoá Logo CamScanner miễn phí! Bước 1. Bạn cần có một tài khoản e-mail giáo dục (.edu) nếu chưa có hãy đăng ký miễn phí tại: https://imail.edu.vn/ Bước 2. Mở phần mềm Camscaner và đăng nhập bằng tài khoản giáo dục ở Bước 1. Bạn sẽ được hưởng lợi ích từ gói Edu trong thời gian 1 năm như: - Không quảng cáo  - Không hình mờ trên ảnh (logo watermark) 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ế...

Cách ẩn (hide) dòng không có dữ liệu trong excel hoàn toàn tự động

Nếu bạn cần tập trung làm việc trên một phần bảng tính Excel, có thể bạn cần ẩn các ô, hàng, cột không chứa dữ liệu (hay còn gọi là ô trống). Trong bài viết này, mình sẽ hướng dẫn một cách nhanh chóng để ẩn tất cả các hàng chứa ô trống trong Excel. Cách ẩn hàng chứa ô trống trong Excel  với BuilderTV Add-in Có nhiều hướng dẫn khác nhau để ẩn bớt hàng chứa ô trống khi làm việc trong Excel. Điển hình, bạn có thể ẩn hàng cột bằng chuột phải, tùy chọn trong Format Cell, hoặc sử dụng phím tắt. Tuy nhiên các cách làm đó đều là thủ công và sẽ mất nhiều thời gian và công sức khi bảng tính của bạn có nhiều dữ liệu. Hãy theo dõi hướng dẫn cách ẩn hàng trống hoàn toàn tự động trong Excel với BuilderTV Add-in như sau. Bước 1. Tải tiện ích mở rộng dành cho Excel BuilderTV Add-in tại đây . Bước 2. Vào menu 'Tiện ích khác' chọn 'Ẩn hàng chứa ô trống' và làm tiếp tục các bước theo hướng dẫn. Như vậy tất cả các hàng chứa ô trống trong vùng chọn đã tự động được ẩn (hide), rất đơn giản ...