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 cái gì đó, chúng tôi có thể cần đợi một 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 cách nào để chúng ta tạm dừng mã macro để thực hiện nhiệm vụ của mình? Chúng tôi 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 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.

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ớ rằng, 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"). Value = "Chào mừng"

Nhưng nếu bạn nhìn vào dòng tiếp theo, nó cho biết 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 thời gian hệ thống của tôi đạt đến 13:15:01.

Khi thời gian hệ thống của tôi đạt đến thời điểm đó, 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 các thời điểm khác nhau và sau đó chúng ta cần sử dụng hàm NOW VBA với hàm TIME VALUE.

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 sự khác biệt duy nhất 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 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 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) #End If' Đối với Hệ thống 32 Bit

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

Được rồi, bây giờ 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.

Dim StartTime như chuỗi Dim EndTime As String

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 đã chỉ định 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.

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