Chức năng Chờ VBA - Cách sử dụng Phương pháp Chờ VBA trong Excel?

Hàm Chờ VBA trong Excel

VBA Wait là một chức năng tích hợp được sử dụng để tạm dừng mã thực thi trong một khoảng thời gian cụ thể, nó rất giống với những gì chúng ta làm trong lệnh ngủ và để tạm dừng mã, chúng ta sử dụng phương thức application.wait.

Một số mã yêu cầu một thời gian trước khi chuyển sang dòng mã tiếp theo do các nhiệm vụ khác phải hoàn thành. Trong những trường hợp này, chúng ta cần dừng thực thi mã và tạm dừng một thời gian, sau đó tiến hành thực thi. Chúng ta có thể tạm dừng mã được thực thi theo hai cách, cách thứ nhất là phương thức “Sleep” và cách thứ hai là phương thức “Wait”. Trong bài viết trước của chúng tôi, chúng tôi đã thảo luận về phương pháp "VBA Sleep" để tạm dừng mã VBA.

“Chờ đã,” như chính cái tên đã nói, nó sẽ giữ mã macro được thực thi trong một khung thời gian cụ thể. Sử dụng phương pháp này, chúng tôi cần chỉ định thời gian mã của chúng tôi nên tạm dừng. Chúng ta sẽ xem các ví dụ tiếp theo.

Cú pháp của hàm WAIT như sau.

Chúng tôi cần đề cập đến khoảng thời gian mã của chúng tôi nên tạm dừng. Như bạn có thể thấy cuối cùng, nó nói Boolean. Điều này có nghĩa là nó trả về kết quả là các giá trị Boolean, tức là TRUE hoặc FALSE.

Cho đến khi đến thời gian cụ thể, nó cho biết FALSE và thời điểm đã chỉ định đến, nó trả về TRUE.

Điều này không giống như chức năng SLEEP vì WAIT là một chức năng tích hợp trong đó SLEEP là một chức năng Windows. Trước khi truy cập chức năng SLEEP, chúng ta cần đề cập đến đoạn mã dưới đây ở đầu mô-đun. Nhưng WAIT không yêu cầu điều này.

Mã:

#If VBA7 Sau đó Khai báo Công khai PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Đối với Hệ thống 64 Bit #Else Khai báo Công khai Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Đối với Hệ thống 32 Bit Kết thúc Nếu

Ví dụ để sử dụng Hàm Chờ VBA trong Excel

Ví dụ 1

Giả sử bạn đang làm việc trong excel giữa ngày vào lúc 14:30:00 và bạn muốn mã của mình bị tạm dừng cho đến khi thời gian trở thành 14:40:00. Bạn có thể sử dụng mã dưới đây.

Mã:

Sub Wait_Example1 () Application.Wait "14:40:00" End Sub

Mã sẽ ngăn excel của bạn hoạt động cho đến khi thời gian đạt đến 14:40:00 trong hệ điều hành của bạn. Cung cấp thời gian như thế này rất nguy hiểm vì không phải lúc nào chúng tôi cũng làm việc từ 14:30:00. Nó luôn thay đổi.

Hãy nói bất cứ khi nào bạn đang chạy mã. Bạn muốn đợi trong 2 phút, làm thế nào để bạn tham khảo điều này trong mã của bạn?

Vì vậy, chúng ta có thể sử dụng hàm VBA NOW với hàm TIME VALUE để nhập thời gian xác định từ thời điểm hiện tại.

Chỉ để nhắc nhở bạn, hàm NOW () trả về ngày và giờ hiện tại theo hệ thống máy tính của bạn. Hàm TIMEVALUE biểu thị thời gian từ 00:00:00 đến 23:59:59 tức 11:59:59 PM ở định dạng 24 giờ. Nó chuyển đổi giá trị chuỗi thành giá trị thời gian.

Ví dụ NOW () + TIMEVALUE (00:02:30) nghĩa là Thời gian Hiện tại + 2 phút 30 giây.

Nếu thời gian hiện tại là 14:25:30, thì nó sẽ trở thành 14:28:00.

Để dừng hoặc tạm dừng mã của bạn được thực thi từ thời điểm hiện tại đến 10 phút tiếp theo, bạn có thể sử dụng mã bên dưới.

Mã:

Sub Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub

Điều quan trọng là sử dụng hàm NOW () để tạm dừng chính xác. Nếu không, có khả năng sổ làm việc excel của bạn bị tạm dừng cho đến nửa đêm. Tuy nhiên, chúng ta có thể thoát ra khỏi phương pháp tạm dừng bất kỳ lúc nào bằng cách nhấn phím Esc hoặc Phím ngắt.

Ví dụ số 2

Chờ 10 giây mỗi khi vòng lặp chạy

Phương pháp chờ được sử dụng tốt với các vòng lặp. Có những tình huống mà bạn có thể yêu cầu đợi 10 giây mỗi khi vòng lặp chạy. Ví dụ, hãy xem dữ liệu dưới đây.

Để tính Lợi nhuận = (Doanh số - Chi phí), bạn muốn tạo một vòng lặp và sau mỗi vòng lặp, bạn muốn đợi 10 giây để kiểm tra xem kết quả có chính xác hay không. Đoạn mã dưới đây sẽ làm điều đó.

Mã:

Sub Wait_Example3 () Dim k As Integer For k = 2 to 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00 : 10 ")) Tiếp theo k End Sub

Mã này sẽ tính toán cột lợi nhuận theo từng dòng. Sau khi hoàn thành dòng đầu tiên, nó sẽ đợi 10 giây trước khi tính dòng tiếp theo.

VBA Sleep so với VBA Wait

VBA NGỦ VBA CHỜ
Nó không phải là một chức năng tích hợp sẵn trong VBA, cần một mã đặc biệt để truy cập chức năng này. Đây là một chức năng tích hợp sẵn trong VBA, không yêu cầu bất kỳ mã đặc biệt nào để truy cập chức năng này.
Giấc ngủ yêu cầu mili giây làm khung thời gian. Chờ đợi yêu cầu một khung thời gian thường xuyên.
Chúng tôi có thể trì hoãn mã trong mili giây. Chúng tôi có thể trì hoãn chỉ trong vài giây.

thú vị bài viết...