Chức năng Chờ VBA | Làm thế nào để 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 nhất định, 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 được hoàn thành. Trong những trường hợp này, chúng ta cần dừng đoạn mã được thực thi và tạm dừng một thời gian sau đó mới 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 tên cho biết 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 ta cần chỉ định thời gian mã của chúng ta sẽ 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 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 thời gian được chỉ định đến, nó báo FALSE và thời điểm đã chỉ định đến nó trả về TRUE.

Điều này không giống như hàm SLEEP vì WAIT là một hàm tích hợp trong đó SLEEP là một hàm Windows. Trước khi truy cập vào 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 Then Public Khai báo PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Khai báo Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' For 32 Bit Systems End If 

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

Bạn có thể tải xuống Mẫu Excel Chờ VBA này tại đây - Mẫu Excel Chờ VBA

Ví dụ 1

Giả sử bạn đang làm việc trong excel giữa ngày 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ừng hoạt động của excel cho đến khi thời gian đạt đến 14:40:00 trong hệ điều hành của bạn. Việc 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 mà thời gian luôn thay đổi.

Giả sử bất cứ khi nào bạn đang chạy mã mà bạn muốn đợi trong 2 phút, làm thế nào để 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 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 là 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) có 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ã dưới đây.

Mã:

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

Điều quan trọng là phải 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 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

Hãy đợi 10 giây mỗi khi vòng lặp chạy

Phương pháp chờ đợi đượ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 vs 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.

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