Animasi UserForm Fade Out dalam Beberapa Detik

Membuat UserForm menjadi Transparant dan dalam hitungan beberapa detik userform akan keluar / exit secara otomatis hal ini bisa dibilang Fade Out (transparant secara pelan-pelan). Lalu apa fungsinya dari fade out ini? sebenarnya tidak ada fungsi secara khusus penggunakan transparant ini namun saya kira ini bisa dijadikan sebagai alternatif animasi dari sebuah UserForm yang dibuat pada VBA Ms. Excel.

Bukankah kelihatan keren jika Anda memiliki sebuah Aplikasi yang memiliki variasi animasi yang cukup menarik bagi para user namun tentunya tidak mengurangi fungsi utama dari pembuatan aplikasi tersebut. Animasi userform fade out ini hanya sekedar tambahan saja. Seperti yang telah saya buat beberapa atau koleksi aplikasi yang dibuat menggunakan Ms. Excel di blog ini, bagi yang berminat mencobanya silakan cari-cari saja sudah ada kategori dari setiap materinya kok.

Baiklah, bagaimana cara membuat Fade Out Animasi UserForm tersebut?

Langkah-langkahnya silakan buat sebuah userform yang disertai dengan label dan ganti caption untuk label tersebut menjadi tulisan "Terimakasih..." kemudian tambahkan pula 1 buah commandbutton kemudian ganti juga caption melalui properties menjadi "Close" kira-kira desain tampilan seperti berikut ini untuk pewarnaan latar belakang dari userform Anda bisa lakukan sendiri dengan mengganti BackColor pada propertis menjadi &H00FF0000& atau warna biru.



Terlihat pada tampilan userform diatas bertuliskan ucapan "Terimakasih" tentunya Anda sudah bisa membaca bahwa animasi fade out userform ini hanya untuk sekedar informasi dalam animasi saja. Langkah berikutnya kita akan membuat coding dan silakan perhatikan coding berikut ini

Tambahkan Coding Berikut pada UserForm


Option Explicit
Private Declare Function GetActiveWindow Lib "USER32" () As Long

Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _
(ByVal hWnd As Long, _
ByVal lngWinIdx As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _
(ByVal hWnd As Long, _
ByVal lngWinIdx As Long) As Long

Private Declare Function SetLayeredWindowAttributes Lib "USER32" _
(ByVal hWnd As Long, _
ByVal crKey As Integer, _
ByVal bAlpha As Integer, _
ByVal dwFlags As Long) As Long
  
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2
Private Const GWL_EXSTYLE = &HFFEC

Dim hWnd            As Long
Dim Transparancy    As Integer
Dim Running         As Boolean


Jika Sudah selesai tambahkan juga coding untuk prosedur Transparant nya seperti berikut ini

Private Sub Transparency()

Dim MyTimer         As Double

    DoEvents
    MyTimer = Timer
    Do
        Do
        Loop While Timer - MyTimer < 0.07
        MyTimer = Timer
        Transparancy = Transparancy - 1
        If Transparancy < 0 Then
            Unload Me
            Else
            Call SemiTransparent(Application.WorksheetFunction.Min(Transparancy, 100))
        End If
        DoEvents
    Loop While Running

End Sub

Jika sudah selesai membuat modul Transparant tambahkan juga untuk semi trasnparan atau Anda bisa copy pastekan coding berikut ini


Private Sub SemiTransparent(ByVal intLevel As Integer)
Dim lngWinIdx       As Long
    hWnd = GetActiveWindow
    lngWinIdx = GetWindowLong(hWnd, GWL_EXSTYLE)
    SetWindowLong hWnd, GWL_EXSTYLE, lngWinIdx Or WS_EX_LAYERED
    SetLayeredWindowAttributes hWnd, 0, (255 * intLevel) / 100, LWA_ALPHA
End Sub

Jika sudah selesai langkah berikutnya kita akan memanggil coding prosedur diatas kedalam prosedur userform initialize maka silakan tuliskan coding berikut


Private Sub UserForm_Initialize()
    Transparancy = 120
    Call SemiTransparent(100)
    DoEvents
End Sub

Tambahkan juga coding untuk prosedur ketika userform aktif untuk memanggil coding transparant
 
Private Sub UserForm_Activate()
    Running = True
    Call Transparency
End Sub


Agar ketika Form di close atau keluar maka Anda harus mematikan runing dari time transparant tersebut maka silakan tambahkan coding Close Query


Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Running = False
End Sub

Bagaimana mengecek hasilnya?
Silakan jalankan printah tersebut maka akan muncul userform seperti gambar diatas dengan ucapan terimakasih dan dalam  hitungan beberapa detik userform akan berubah menjadi transparant seperti gambar berikut ini


Lihatlah ada perbedaan antara gambar form paling atas dengan gambar form yang kedua diatas yaitu transparancy.

Oke, demikian bagaimana membuat animasi userform dengan Fade Out dan close dalam beberapa detik, semoga saja bermanfaat dan selamat mencoba. Jangan lupa jika ada pertanyaan silakan komentar dibawah mudah-mudahan bisa terjawab.

0 Response to "Animasi UserForm Fade Out dalam Beberapa Detik"

Posting Komentar

Tulisan ini Bermanfaat..? Silakan berkomentar sesuai topik artikelnya, tidak dianjurkan menggunakan kata-kata yang dapat menimbulkan hal negatif. Mohon maaf apabila tidak memiliki etika akan Admin HAPUS tanpa pemberitahuan kembali. Terimakasih... salam Exceler