Pesan pop-up atau message box (MsgBox) sering digunakan dalam aplikasi untuk memberikan informasi singkat kepada pengguna.
Namun, MsgBox standar biasanya memerlukan interaksi pengguna, seperti menekan tombol OK atau Cancel. Bagaimana jika Anda ingin membuat MsgBox yang otomatis menutup setelah beberapa detik?
Dalam tutorial ini, kita akan membahas langkah-langkah sederhana dan efektif untuk membuat MsgBox yang menutup secara otomatis, tanpa perlu tindakan dari pengguna. Solusi ini sangat bermanfaat dalam berbagai skenario, seperti menampilkan pesan sementara, pemberitahuan ringan, atau pengingat yang tidak memerlukan konfirmasi.
Mari kita mulai dan pelajari bagaimana caranya! 🚀
Untuk membuat pesan yan menutup otomatis ada 2 cara. Pertama menggunakan Windows Script yang kedua menggunakan Windows API
Untuk membuat Msgbox yang menutup secara otomatis, yang pertama bisa menggunakan Object dari Wscript.Shell dengan fungsi popup untuk scriptnya bisa ditulis seperti dibawah ini.
Function MsgboxBaru(Pesan As String, Waktu As Long, Judul As String) Dim Msg As Object Set Msg = CreateObject("Wscript.Shell") Select Case Msg.popup(Pesan, Waktu, Judul, 0) Case 1, -1: Exit Function End Select End Function
Cara menggunakan Msgbox baru sama seperti Msgbox biasa.
Private Sub pesan_Click() MsgboxBaru "Hallo, saya andi setiadi", 4, "Tutorial" End Sub
Angka 4 pada script diatas berarti Msgbox akan menutup setelah 4 Detik
Cara kedua adalah dengan menggunakan Windows API memanfaatkan fungsi dari MsgBoxTimeout
.
Windows API ini sudah saya buat untuk 32Bit dan juga 64Bit menggunakan Compiler Directive atau Preprocessor sehinga bisa berjalan disemua versi.
Tempatkan script ini pada posisi paling atas dari Standard Module.
#If Win64 Then Public Declare PtrSafe Function MsgBoxTimeout Lib "user32" _ Alias "MessageBoxTimeoutA" ( _ ByVal hwnd As LongPtr, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal wType As VbMsgBoxStyle, _ ByVal wlange As Long, _ ByVal dwTimeout As Long) _ As Long #Else Public Declare Function MsgBoxTimeout Lib "user32" _ Alias "MessageBoxTimeoutA" ( _ ByVal hwnd As Long, _ ByVal lpText As String, _ ByVal lpCaption As String, _ ByVal wType As VbMsgBoxStyle, _ ByVal wlange As Long, _ ByVal dwTimeout As Long) _ As Long #End If
Setelah itu Fungsi dari MsgboxTimeOut sudah bisa untuk digunakan di module ataupun di Userform. Contohnya bisa dibuat seperti dibawah ini.
Private Sub pesan_Click() MsgBoxTimeout 0, "Hallo, saya andi setiadi", "Tutorial", vbInformation, 0, 4000 End Sub
Tutorial lengkap