Chức năng Chờ & Ngủ của VBA - Tạm dừng / Trì hoãn Mã VBA

Hướng dẫn này sẽ trình bày cách tạm dừng / trì hoãn mã bằng cách sử dụng các chức năng Chờ và Ngủ trong VBA.

Khi chúng tôi tạo các chương trình VBA lớn thực hiện nhiều phép tính hoặc thậm chí có thể gọi chương trình bên ngoài để chạy, chúng tôi có thể yêu cầu mã VBA của mình ngừng chạy trong một khoảng thời gian cụ thể trong khi quá trình bên ngoài đang diễn ra. VBA có sẵn một số phương pháp để đạt được điều này.

Sử dụng phương pháp Application.Wait

Nếu chúng ta cần tạm dừng việc chạy macro của mình trong một thời gian hoặc cho đến khi đạt đến một thời gian cụ thể trước khi thực hiện bước tiếp theo, chúng ta có thể sử dụng Application.Wait phương pháp. Điều này có thể hữu ích, chẳng hạn, nếu chúng tôi đã tự động hóa quy trình đăng nhập vào một trang web và cần đợi vài giây cho đến khi trang được tải trước khi macro của chúng tôi tiếp tục chạy.

Chờ 1 giây

Bao gồm dòng này bên dưới vào macro của bạn, quá trình chạy của nó sẽ bị tạm dừng trong khoảng 1 giây:

1 Application.Wait (Now + TimeValue ("0:00:01"))

Đợi đến khi

Trong một số trường hợp, bạn sẽ cần phải đợi cho đến một thời gian cụ thể. Với dòng này bên dưới macro của bạn sẽ không tiếp tục trước 9 giờ sáng:

1 Ứng dụng. Chờ "09:00:00"

Xin lưu ý rằng Application.Wait không chấp nhận độ trễ dưới 1 giây.

Lập trình VBA | Code Generator làm việc cho bạn!

Sử dụng phương pháp ngủ

Nếu bạn cần một cách chính xác hơn để tạm dừng macro của mình, bạn có thể sử dụng phương pháp Sleep.

Sleep là một hàm API của Windows, nghĩa là nó không phải là một phần của VBA. Nó có thể được truy cập bằng cách sử dụng một câu lệnh khai báo đặc biệt.

Nếu bạn đang sử dụng phiên bản 64-bit của Microsoft Office, bạn có thể chèn câu lệnh sau vào mô-đun mới hoặc vào đầu mô-đun (không trực tiếp trong chương trình con) mà bạn muốn sử dụng chức năng Ngủ trong:

1 Khai báo công khai PtrSafe Sub Sleep Lib "kernel32" (ByVal Mili giây As LongPtr)

Với phiên bản 32-bit sử dụng dòng này:

1 Khai báo công khai Sub Sleep Lib "kernel32" (ByVal Mili giây As LongPtr)

Sau khi khai báo hàm Sleep, bạn có quyền truy cập vào nó trong các chương trình con như sau:

1 Ngủ 10000

Với dòng này phía trên macro của bạn sẽ bị tạm dừng trong 10.000 mili giây, tức là 10 giây.

Sử dụng một vòng lặp với các sự kiện Do

Nhược điểm lớn của việc sử dụng các phương pháp Chờ và Ngủ là người dùng không thể làm bất cứ điều gì trong Excel trong khi chờ macro tiếp tục. Người dùng có thể nghĩ rằng Excel đã ngừng phản hồi và khi đó người dùng có thể sử dụng Ctl + Break để ngắt macro, điều này đánh bại mục đích của việc tạm dừng macro để bắt đầu.

Để khắc phục vấn đề này, chúng ta có thể sử dụng một vòng lặp với một phương thức gọi là DoEvents.

1234567 Kiểm tra phụ công khai ()Dim i As LongĐối với i = 1 đến 20000Phạm vi (“A1”). Giá trị = iDoEventsTiếp theo tôiKết thúc Sub

Bây giờ, trong khi Excel đang chạy macro ở trên, người dùng có thể tiếp tục tương tác với Excel - ví dụ như chúng ta có thể thay đổi tab hoặc định dạng ô - về cơ bản, macro vẫn tiếp tục chạy nhưng màn hình Excel không bị đóng băng. Chúng ta có thể sử dụng một vòng lặp tương tự để tạo một hàm hẹn giờ trong Excel và kết hợp DoEvents trong đó để mở màn hình trong khi bộ đếm thời gian đang chạy.

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave