شما باید از توابع API مثل SetTimer و KillTimer برای حل این مشکل استفاده کنید. اول این توابع رو اضافه کنید
Private Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
بعد Timer رو ایجاد کنید
Private Sub Form_Load()
SetTimer Me.hwnd, 0, 1000, AddressOf TimerProc
End Sub
یک ماژول به برنامه اضافه کنید و یک روتین به نام TimerProc
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub TimerProc()
Call Sleep(1000)
Form1.Label1.Caption = Time
End Sub
من تابع Sleep رو فقط برای تست برنامه صدا میکنم ولی میبینیم که Timer بدون مشکل هر 1 ثانیه یکبار اجرا میشه.
در نهایت Timer رو باید از بین برد
Private Sub Form_Unload(Cancel As Integer)
KillTimer Me.hwnd, 0
End Sub
مراقب اجرای کد در چنین Timer هایی باشید و یادتون باشه که حتما اونو از بین ببرید.