VBA tạm dừng | Tạm dừng Mã VBA bằng chức năng Ngủ và Chờ

Tạm dừng mã VBA từ khi chạy

VBA Pause được sử dụng để tạm dừng mã thực thi nó trong một khoảng thời gian cụ thể và để tạm dừng mã trong VBA, chúng tôi sử dụng phương thức application.wait.

Khi chúng tôi xây dựng các dự án VBA lớn sau khi thực hiện một việc gì đó, chúng tôi có thể cần đợi một khoảng thời gian để thực hiện các tác vụ khác. Trong các tình huống như vậy, làm thế nào để chúng ta tạm dừng mã macro để thực hiện nhiệm vụ của mình? Chúng ta có thể tạm dừng mã VBA trong một khoảng thời gian cụ thể bằng cách sử dụng hai chức năng và các chức năng đó là “Chờ” & “Ngủ”.

Làm thế nào để tạm dừng mã bằng cách sử dụng phương pháp chờ?

“Chờ” là chức năng chúng tôi sử dụng trong VBA để giữ macro chạy trong một khoảng thời gian cụ thể. Bằng cách áp dụng chức năng này, chúng ta cần đề cập đến thời gian mà mã của chúng ta sẽ đợi.

Bạn có thể tải xuống Mẫu VBA Tạm dừng Excel này tại đây - Mẫu VBA Tạm dừng Excel

Ví dụ: nếu bạn đang thực thi mã lúc 13:00:00 nếu bạn cung cấp thời gian là “13:15:00” thì nó sẽ giữ macro chạy trong 15 phút.

Bây giờ, hãy xem đối số của hàm WAIT trong VBA.

Trong đối số thời gian, chúng ta cần đề cập đến thời điểm mã của chúng ta nên tạm dừng hoặc chờ đợi.

Ví dụ, hãy xem mã VBA bên dưới.

Mã:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Tới VBA "End Sub 

Hãy nhớ trong khi chạy mã này, thời gian hệ thống của tôi là 13:00:00, ngay sau khi tôi chạy mã, nó sẽ thực thi hai dòng đầu tiên, tức là

Phạm vi ("A1"). Giá trị = "Xin chào" & Phạm vi ("A2"). Giá trị = "Chào mừng"

Nhưng nếu bạn nhìn vào dòng tiếp theo nó nói Application.Wait (“13:15:00”), vì vậy sau khi thực hiện các tác vụ dòng đó, macro của tôi sẽ bị tạm dừng trong 15 phút tức là từ 13:00:00 nó sẽ đợi cho đến khi hệ thống của tôi thời gian đạt 13:15:01.

Khi thời gian hệ thống của tôi đạt đến thời gian đó, nó sẽ thực thi các dòng mã còn lại.

Phạm vi ("A3"). Giá trị = "Tới VBA"

Tuy nhiên, đây không phải là cách tốt nhất để thực hành mã tạm dừng, giả sử bạn đang chạy mã vào những thời điểm khác nhau, khi đó chúng ta cần sử dụng hàm NOW VBA với hàm GIÁ TRỊ THỜI GIAN.

Hàm Now trả về ngày và giờ hiện tại theo hệ thống mà chúng tôi đang làm việc.

Hàm TIME Value giữ thời gian từ 00:00:00 đến 23:59:29.

Ok, giả sử chúng ta cần tạm dừng mã trong 10 phút bất cứ khi nào chúng ta chạy mã, sau đó chúng ta có thể sử dụng mã bên dưới.

Mã:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Giá trị =" Tới VBA "Kết thúc Sub 

Điều này tương tự như mã trước đó nhưng chỉ khác là chúng tôi đã thêm chức năng GIÁ TRỊ NGAY & THỜI GIAN.

Bất cứ khi nào chúng tôi chạy mã này, nó sẽ giữ hoặc tạm dừng việc thực thi trong 10 phút.

Làm thế nào để tạm dừng mã VBA bằng cách sử dụng phương pháp ngủ?

Sleep là một chức năng phức tạp trong VBA vì nó không phải là một chức năng được tích hợp sẵn. Vì nó không được tích hợp sẵn để có thể sử dụng, chúng tôi cần thêm đoạn mã dưới đây vào đầu mô-đun của chúng tôi.

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) # End If' For 32 Bit Systems 

Bạn chỉ cần sao chép đoạn mã trên và dán nó vào đầu mô-đun.

Lý do tại sao chúng ta cần thêm đoạn mã trên vì SLEEP là một hàm VBA được trình bày trong tệp DLL của Windows, vì vậy chúng ta cần khai báo danh pháp trước khi bắt đầu quy trình con.

Ok, bây giờ chúng ta hãy xem ví dụ về hàm SLEEP.

Mã:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Đầu tiên, chúng ta đã khai báo hai biến là String.

 Làm mờ thời gian bắt đầu theo chuỗi Làm mờ thời gian kết thúc dưới dạng chuỗi 

Sau đó, chúng tôi đã gán hàm TIME excel cho biến StartTime. Hàm TIME trả về thời gian hiện tại theo từng hệ thống.

StartTime = Thời gian

Sau đó, chúng tôi đã chỉ định tương tự để hiển thị trong hộp tin nhắn.

MsgBox StartTime

Sau đó, tôi đã áp dụng chức năng SLEEP là Sleep (10000).

Ở đây 10000 là mili giây tương đương với 10 giây trong VBA.

Sau đó, cuối cùng, tôi đã gán một hàm TIME nữa cho biến EndTime .

Bây giờ một lần nữa tôi đã viết một mã để hiển thị thời gian.

EndTime = Thời gian

Điều này sẽ hiển thị sự khác biệt giữa thời gian bắt đầu và thời gian kết thúc.

Bây giờ tôi sẽ thực thi mã và xem thời gian bắt đầu là bao nhiêu.

Khi tôi thực thi mã, thời gian hệ thống của tôi là 13:40:48 và bây giờ mã của tôi sẽ ngủ trong 10 giây. Cuối cùng, thời gian của tôi như sau.

Vì vậy, như thế này, chúng ta có thể tạm dừng mã thực thi nó trong một khoảng thời gian nhất định.


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