31.7 C
Ho Chi Minh City
Thursday, June 4, 2026
AIPHOGPT.COM
Trang chủCông thức ExcelCác hàm Wait và Sleep trong VBA: Giải thích

Các hàm Wait và Sleep trong VBA: Giải thích

Join LeQuocThai.Com on Telegram Channel

Đánh giá lequocthai.com:

0 / 5 Voted: 0 Votes: 0

Your page rank:

Tuy nhiên, máy tính vẫn có thể đồng thời xử lý các tác vụ nền khác như in ấn hoặc thực hiện các luồng (thread) nền.

Tầm quan trọng của các hàm Wait và Sleep trong VBA

Các hàm này rất hữu ích khi bạn cần để chương trình đợi một quá trình hoặc tác vụ khác (không được VBA kết nối trực tiếp) hoàn thành. Trong những trường hợp như vậy, bạn có thể ước tính thời gian tối đa cần để hoàn thành tác vụ, sau đó trong mã của mình tạm dừng thực thi trong khoảng thời gian đó.

Ví dụ:

Bạn có một đoạn mã VBA có thể chạy một tệp thực thi khác (.exe) và sau khi chạy tệp này bạn cần chờ cho đến khi tệp thực thi hoàn thành rồi mới tiếp tục. Vì VBA không thể giao tiếp trực tiếp với tệp thực thi, nên bạn có thể viết mã sao cho:

  • Khởi động tệp thực thi.
  • Đặt mã dừng lại trong 10 giây (thời gian tối đa dự kiến cho tệp thực thi chạy).
  • Sau đó tiếp tục thực thi.

Hàm VBA Wait trong Excel

`Application.Wait` là một hàm VBA chỉ có trong Excel. Cú pháp như sau:

Application.Wait(Time)

Trong đó Time xác định thời điểm mà macro sẽ tiếp tục chạy. Time luôn phải ở định dạng thời gian của Microsoft Excel.

Khám phá:  Hàm CHOOSEROWS trong Excel – Cách Sử Dụng

Một số ví dụ về hàm Wait

Ví dụ 1: Dừng mã cho đến 2:00 PM hôm nay.

Sub WaitTest()
MsgBox ("This application is started!")
Application.Wait "14:00:00"
MsgBox ("Execution resumed after 2PM")
End Sub

Ví dụ 2: Dừng macro trong 10 giây.

Sub WaitTest()
MsgBox ("This application is started!")
Application.Wait (Now + TimeValue("0:00:10"))
MsgBox ("Execution resumed after 10 Seconds")
End Sub

Ví dụ 3: Sử dụng hàm Wait để tạo chương trình thông báo thời gian mỗi phút (đến 10 vòng lặp).

Public Sub TalkingTime()
For i = 0 To 10
Application.Wait (Now + TimeValue("0:01:00"))
Application.Speech.Speak ("The Time is " & Time)
Next i
End Sub

Hàm Sleep

`Sleep` là một hàm hệ thống của Windows, không phải hàm VBA, nhưng bạn vẫn có thể sử dụng nó trong mã VBA bằng cách gọi API Sleep của Windows. Thực tế, Sleep nằm trong các file DLL của Windows, vì vậy trước khi dùng bạn phải khai báo API ở đầu mô-đun.

Cú pháp của hàm Sleep như sau:

Sleep(delay)

Trong đó delay xác định thời gian tạm dừng tính bằng mili giây.

Một số ví dụ về hàm Sleep trong VBA

Ví dụ 1: Dừng macro trong 10 giây.

#If VBA7 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Cho hệ thống 64-bit
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Cho hệ thống 32-bit
#End If
Sub SleepTest()
MsgBox "Execution is started"
Sleep 10000   'delay tính bằng mili giây
MsgBox "Execution Resumed"
End Sub

Ví dụ 2: Dừng mã theo thời gian người dùng nhập qua `InputBox`.

Sub SleepTest()
On Error GoTo InvalidRes
Dim i As Integer
i = InputBox("Enter the Seconds for which you need to pause the code :")
Sleep i * 1000   'delay tính bằng mili giây
MsgBox ("Code halted for " & i & " seconds.")
Exit Sub
InvalidRes:
MsgBox "Invalid value"
End Sub

Khám phá:  Hàm TRANSPOSE trong Excel – Cách Sử Dụng

Sự khác biệt giữa VBA Wait và Sleep

Công dụng của hai hàm này về cơ bản giống nhau, nhưng Sleep không chính xác như Wait. Câu lệnh Sleep dựa vào các tick của bộ xử lý để tính thời gian trễ, do đó có thể chênh lệch nhẹ giữa các máy tính. Ngược lại, hàm Wait không chịu ảnh hưởng bởi tốc độ CPU và cho kết quả ổn định hơn.

Ưu điểm của Sleep so với Wait là tính linh hoạt: bạn có thể chỉ định thời gian trễ bằng mili giây, trong khi Wait chỉ cho phép trễ tính bằng giây nguyên.

Đây là toàn bộ nội dung về các hàm VBA WaitSleep. Nếu bạn có bất kỳ câu hỏi nào liên quan đến chủ đề này, hãy cho chúng tôi biết.

Join LeQuocThai.Com on Telegram Channel

Lê Quốc Thái
Lê Quốc Tháihttps://lequocthai.com/
Yep! I am Le Quoc Thai codename name tnfsmith, one among of netizens beloved internet precious, favorite accumulate sharing all my knowledge and experience Excel, PC tips tricks, gadget news during over decades working in banking data analysis.

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây
Captcha verification failed!
CAPTCHA user score failed. Please contact us!

Join LeQuocThai.Com on Telegram Channel

Đọc nhiều nhất

BÀI VIẾT MỚI NHẤT

CÙNG CHỦ ĐỀ