Code tự động đóng MsgBox hoạt động sai thời gian (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

phamvandunghp84

Thành viên thường trực
Tham gia
5/3/20
Bài viết
241
Được thích
12
Mình đặt thời gian chờ là 5 giây thì hộp thoại sẽ tự biến mất sau 5 giây nếu không chọn Yes, nhưng khi mình đặt thời gian là 59 giây thì sau 59 giây nó không tự biến mất ? không biết tại sao lại vậy nữa . mong các bạn chỉ mình lỗi tại sao ?

Sub demo()
Msg_Tang1 (" thong bao doi 59 giay ")
End Sub

'tao dinh nghia Msg_Tang1 de tu dong dong thong bao lai sau 59 giay
Sub Msg_Tang1(Ta As String)
Dim objShell_Tang1 As Object
Set objShell_Tang1 = CreateObject("Wscript.Shell")
If objShell_Tang1.Popup(Ta, 59, "Thong Bao: Da bi loi", vbYesNo) = 6 Then

Call Chay_chuong_trinh..

End If
Set objShell_Tang1 = Nothing
End Sub
 
Mình đặt thời gian chờ là 5 giây thì hộp thoại sẽ tự biến mất sau 5 giây nếu không chọn Yes, nhưng khi mình đặt thời gian là 59 giây thì sau 59 giây nó không tự biến mất ? không biết tại sao lại vậy nữa . mong các bạn chỉ mình lỗi tại sao ?

Sub demo()
Msg_Tang1 (" thong bao doi 59 giay ")
End Sub

'tao dinh nghia Msg_Tang1 de tu dong dong thong bao lai sau 59 giay
Sub Msg_Tang1(Ta As String)
Dim objShell_Tang1 As Object
Set objShell_Tang1 = CreateObject("Wscript.Shell")
If objShell_Tang1.Popup(Ta, 59, "Thong Bao: Da bi loi", vbYesNo) = 6 Then

Call Chay_chuong_trinh..

End If
Set objShell_Tang1 = Nothing
End Sub
Cái Popup trong Wscript.Shell ấy hoạt động không chính xác đâu. Bạn nên dùng hàm API sẽ tốt hơn
 
mong bạn cho mình xin đoạn code thay thế được không? Mình không phải dân lập trình nên thật khó.
Oh, cái này có nhiều lắm lắm luôn... trên GPE đó bạn. Ví dụ:
Mã:
#If Win64 Then
    Private Declare PtrSafe Function MsgBoxTimeout Lib "user32" Alias "MessageBoxTimeoutW" _
    (ByVal hWnd As LongPtr, ByVal lpText As LongPtr, ByVal lpCaption As LongPtr, _
     ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) _
    As Long
#Else
    Private Declare Function MsgBoxTimeout Lib "user32" Alias "MessageBoxTimeoutW" _
    (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, _
     ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) _
    As Long
#End If

Function ACMsgBox(ByVal prompt As String, ByVal title As String, ByVal buttons As VbMsgBoxStyle, ByVal SecondsToWait As Long) As VbMsgBoxResult
   ACMsgBox = MsgBoxTimeout(Application.hWnd, StrPtr(prompt), StrPtr(title), buttons, 0, SecondsToWait * 1000)
End Function

Sub Demo()
  Dim answer As VbMsgBoxResult
  answer = ACMsgBox("Noi dung MsgBox", "Tieu de MsgBox", vbYesNo, 3)
  If answer = vbYes Then
    '.............
  End If
End Sub
Con số 3 là 3 giây nha
 
Web KT

Bài viết mới nhất

Back
Top Bottom