Postingan ini bisa dikatakan sebagai postingan lanjutan uguna memperdalam pengetahuan kita tentang userform, pada kesempatan kali ini saya akan memngajak anda untuk membahas userform dengan seabrek tips seperti membuat background userform dengan gambar (Wallpaper), membuat userform transparant, membuat userform menjadi flate, membuat userform memiliki tombol minimize, Restore down, dan maximize, dengan tips tips ini semoga Userform Excel VBA mempunyai tampilan lebih menarik
Membuat Wallpaper dengan Userform Excel VBA
Selain bisa mengganti Backgroud Userform Excel VBA dengan warna palet yang telah disediakan Excel, Backgroud Userform Excel VBA juga bisa diganti dengan gambar sesuai kemauan kita, caranyapun cukup mudah, sediakan gambar yang akan dijadikan Wallpaper, format gambar adalah (.bmp dan .jpg atau .gif), anda bisa lihat properties dibelah kiri userform anda , pilih Picture lalu browse gambar yang telah disiapkan pilih OK, lihat gambar dibawah iniAgar gambar sesuai dengan ukuran Userform, atur bagian Picture Size Mode menjadi fm Picture Size Mode Stretch.
Jika anda ingin menampilkan beberapa gambar sekaligus maksudnya anda ingin gonta ganti gambar tanpa membongkar properties pada userform, maka caranya juga cukup mudah. Ambil kontrol Image pada kotak toolbox misal saya ambil 3 kontrol Image, Masing masing kontrol image masukan gambar yang berbeda, coba perhatikan gambar dibawah ini
Masukan kode macro dibawah ini kedalam Userform, setelah selsai silahkan dicoba klik klik masing masing gambar
Private Sub Image1_Click()
UserForm1.Picture = Image1.Picture
End Sub
UserForm1.Picture = Image1.Picture
End Sub
Private Sub Image2_Click()
UserForm1.Picture = Image2.Picture
End Sub
UserForm1.Picture = Image2.Picture
End Sub
Private Sub Image3_Click()
UserForm1.Picture = Image3.Picture
End Sub
UserForm1.Picture = Image3.Picture
End Sub
Jika anda berhasil, maka background userform akan mengikuti gambar yang anda pilih.
Masalahnya satu, jika userform tidak aktif maka gambar akan kembali kesemula saat userform kembali diaktifkan (Tidak sesuai pilihan gambar yang kita klik tadi), untuk mengatasi hal ini caranya juga tidak susah suah amat, ganti saja seluruh kode macro yang ada didalam userform dengan kode macro dibawah ini
Private Sub Image1_Click()
UserForm1.Picture = Image1.Picture
Sheets("Sheet1").Range("A1").Value = "Image1"
End Sub
UserForm1.Picture = Image1.Picture
Sheets("Sheet1").Range("A1").Value = "Image1"
End Sub
Private Sub Image2_Click()
UserForm1.Picture = Image2.Picture
Sheets("Sheet1").Range("A1").Value = "Image2"
End Sub
UserForm1.Picture = Image2.Picture
Sheets("Sheet1").Range("A1").Value = "Image2"
End Sub
Private Sub Image3_Click()
UserForm1.Picture = Image3.Picture
Sheets("Sheet1").Range("A1").Value = "Image3"
End Sub
UserForm1.Picture = Image3.Picture
Sheets("Sheet1").Range("A1").Value = "Image3"
End Sub
Private Sub UserForm_Activate()
If Sheets("Sheet1").Range("A1").Value = "Image1" Then
UserForm1.Picture = Image1.Picture
ElseIf Sheets("Sheet1").Range("A1").Value = "Image2" Then
UserForm1.Picture = Image2.Picture
ElseIf Sheets("Sheet1").Range("A1").Value = "Image3" Then
UserForm1.Picture = Image3.Picture
End If
End Sub
If Sheets("Sheet1").Range("A1").Value = "Image1" Then
UserForm1.Picture = Image1.Picture
ElseIf Sheets("Sheet1").Range("A1").Value = "Image2" Then
UserForm1.Picture = Image2.Picture
ElseIf Sheets("Sheet1").Range("A1").Value = "Image3" Then
UserForm1.Picture = Image3.Picture
End If
End Sub
Sampai disini selesai sudah cara embuat Wallpaper, masih penasaran silakan download sampelnya dibawah ini
Download - Userform Excel VBA Transparan
Membuat Userform Excel VBA Transparan
Wah yang satu ini agak panjang kode macronya, tapi tidak apa apa saya akan tuntun anda untuk membuat userform menjadi Transparan, langkah langkahnya sebagai berikut Gunakan Userform yang kita bahas sebelumnya diatas, lalu sisipkan atau tambahka kode macro dibawah ini kedalam jendela kode userform
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'ExcelPro
Private Declare Function GetWindowLong Lib "USER32" _
Alias "GetWindowLongA" ( _
ByVal hWnd As Long, ByVal lngWinIdx As Long) As Long'ExcelPro
Private Declare Function SetLayeredWindowAttributes Lib "USER32" ( _
ByVal hWnd As Long, ByVal crKey As Integer, _
ByVal bAlpha As Integer, ByVal dwFlags As Long) As Long'ExcelPro
Private Const WS_EX_LAYERED = &H80000'ExcelPro
Private Const LWA_COLORKEY = &H1'ExcelPro
Private Const LWA_ALPHA = &H2'ExcelPro
Private Const GWL_EXSTYLE = &HFFEC'ExcelPro
Dim hWnd As Long
Private Declare Function SetWindowLong Lib "USER32" _
Alias "SetWindowLongA" ( _
ByVal hWnd As Long, ByVal lngWinIdx As Long, _
ByVal dwNewLong As Long) As Long'ExcelPro
Private Declare Function GetWindowLong Lib "USER32" _
Alias "GetWindowLongA" ( _
ByVal hWnd As Long, ByVal lngWinIdx As Long) As Long'ExcelPro
Private Declare Function SetLayeredWindowAttributes Lib "USER32" ( _
ByVal hWnd As Long, ByVal crKey As Integer, _
ByVal bAlpha As Integer, ByVal dwFlags As Long) As Long'ExcelPro
Private Const WS_EX_LAYERED = &H80000'ExcelPro
Private Const LWA_COLORKEY = &H1'ExcelPro
Private Const LWA_ALPHA = &H2'ExcelPro
Private Const GWL_EXSTYLE = &HFFEC'ExcelPro
Dim hWnd As Long
Private Sub BuatSamar(ByVal intLevel As Integer)
On Error Resume Next
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
On Error Resume Next
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
Private Sub ScrollBar1_Change()
Call BuatSamar(ScrollBar1.Value)
UserForm1.Caption = ScrollBar1.Value
End Sub
Call BuatSamar(ScrollBar1.Value)
UserForm1.Caption = ScrollBar1.Value
End Sub
Private Sub UserForm_Activate()
ScrollBar1.Max = 100
ScrollBar1.Min = 5
ScrollBar1.Value = 50
End Sub
ScrollBar1.Max = 100
ScrollBar1.Min = 5
ScrollBar1.Value = 50
End Sub
Private Sub UserForm_Click()
ScrollBar1.Value = 50
End Sub
ScrollBar1.Value = 50
End Sub
Module diatas bukan buatan saya sendiri :) , tapi saya sudah mencobanya dan berhasil loh, sekedar info tipa membuat userform menjadi Transparan ini hanya berlaku di office bersistem 32 bit
Sekarang kembali ke userform, tambahkan kontrol ScrollBar, ScrollBar dugunakan untuk mengatur tingkat Transparan userform
Download - Wallpaper dengan Userform Excel VBA
Membuat Userform Excel VBA mempunyai Tombol Minimize dan Maximize
Seperti yang kita ketahui bersama sama, tampilan defauld userform Excel VBA hanya mempunyai satu tombol yaitu tombol X yang terletak dibagian kanan atas, tombol ini berguna untuk menutup dan menyembunyikan Userform
Nah bagaimana caranya menambahkan tombolo Maximize dan minimize ? Maximize berguna untuk membuat tampilan userform menjadi full sesuai ukuran layar monitor anda, sedangkan Minimize berguna untuk menyembuyikan (Tanpa menutup userform) Userform. SIlahkan ikuti kembali langkah langkah berikut ini
Tambahkan kode ini kedalam userform, jika sebelumya sudah terdapat deklarasi semisal, maka silahkan hapus dulu kode tersebut
Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long'ExcelPro
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long'ExcelPro
Private Const GWL_STYLE As Long = -16'ExcelPro
Private Const GWL_EXSTYLE As Long = -20'ExcelPro
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_EX_APPWINDOW As Long = &H40000'ExcelPro
Private Const SW_SHOW As Long = 5
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_POPUP As Long = &H80000000&
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long'ExcelPro
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "User32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long'ExcelPro
Private Const GWL_STYLE As Long = -16'ExcelPro
Private Const GWL_EXSTYLE As Long = -20'ExcelPro
Private Const WS_MINIMIZEBOX As Long = &H20000
Private Const WS_MAXIMIZEBOX As Long = &H10000
Private Const WS_EX_APPWINDOW As Long = &H40000'ExcelPro
Private Const SW_SHOW As Long = 5
Private Const WS_VISIBLE As Long = &H10000000
Private Const WS_POPUP As Long = &H80000000&
Pada bagian userform aktif, silahkan tambahkan kode macro dibawah ini
Private Sub UserForm_Activate()
Dim lHwnd As Long, lForm_1 As Long, lForm_2 As Long
If Val(Application.Version) < 9 Then lHwnd = FindWindow("ThunderXFrame", Me.Caption) Else lHwnd = FindWindow("ThunderDFrame", Me.Caption) End If lForm_1 = GetWindowLong(lHwnd, GWL_STYLE) lForm_2 = lForm_1 Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX lForm_2 = lForm_2 And Not WS_VISIBLE And Not WS_POPUP'ExcelPro SetWindowLong lHwnd, GWL_STYLE, lForm_2'ExcelPro lForm_1 = GetWindowLong(lHwnd, GWL_EXSTYLE)'ExcelPro lForm_2 = lForm_1 Or WS_EX_APPWINDOW'ExcelPro SetWindowLong lHwnd, GWL_EXSTYLE, lForm_2'ExcelPro ShowWindow lHwnd, SW_SHOW'ExcelPro End Sub
Dim lHwnd As Long, lForm_1 As Long, lForm_2 As Long
If Val(Application.Version) < 9 Then lHwnd = FindWindow("ThunderXFrame", Me.Caption) Else lHwnd = FindWindow("ThunderDFrame", Me.Caption) End If lForm_1 = GetWindowLong(lHwnd, GWL_STYLE) lForm_2 = lForm_1 Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX lForm_2 = lForm_2 And Not WS_VISIBLE And Not WS_POPUP'ExcelPro SetWindowLong lHwnd, GWL_STYLE, lForm_2'ExcelPro lForm_1 = GetWindowLong(lHwnd, GWL_EXSTYLE)'ExcelPro lForm_2 = lForm_1 Or WS_EX_APPWINDOW'ExcelPro SetWindowLong lHwnd, GWL_EXSTYLE, lForm_2'ExcelPro ShowWindow lHwnd, SW_SHOW'ExcelPro End Sub
Sip pasti berhasil jika office anda memakai sistem 32 bit
Download - Userform Excel VBA Minimize dan Maximize
Masih menyisakan satu lagi yaitu membuat tampilan userform menjadi flate, dengan tampilan ini maka semua tombol baik tombol close minimize dan maximize akan dihilangkan, tidak hanya itu userform juga tidak bisa digeser geser sebagaimana userform biasanya. Untuk menjadikan userform menjadi Flate silahkan ganti semua kode diatas dengan kode dibawah ini
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Sub HapusJudulUserForm(oUserForm As Object)
Dim l As Long, lHwndForm As Long
If Val(Application.Version) < 9 Then lHwndForm = FindWindow("ThunderXFrame", oUserForm.Caption) Else lHwndForm = FindWindow("ThunderDFrame", oUserForm.Caption) End If l = GetWindowLong(lHwndForm, -16) l = l And Not &HC00000 SetWindowLong lHwndForm, -16, l DrawMenuBar lHwndForm End Sub Private Sub UserForm_Initialize() Call HapusJudulUserForm(UserForm1) End Sub
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
Sub HapusJudulUserForm(oUserForm As Object)
Dim l As Long, lHwndForm As Long
If Val(Application.Version) < 9 Then lHwndForm = FindWindow("ThunderXFrame", oUserForm.Caption) Else lHwndForm = FindWindow("ThunderDFrame", oUserForm.Caption) End If l = GetWindowLong(lHwndForm, -16) l = l And Not &HC00000 SetWindowLong lHwndForm, -16, l DrawMenuBar lHwndForm End Sub Private Sub UserForm_Initialize() Call HapusJudulUserForm(UserForm1) End Sub
Sip pasti berhasil jika office anda memakai sistem 32 bit
Download - Usserform flate
Demikianlah kiranya penjelsan tentang teori Userform VBA Exce, semoga bermanfaat bagi kita semua. Ingat share artikel ini ya atau komentarlah jika ada yang ingin ditanyakan, kalau ndak ada yang ingin ditanyakan ya bookmark saja www.excelpro.id ini yang merupakan tempat belajar microsoft excel VBA terbaik. Follow IG admin linknya ada dibawah sono...... Terimakasih selamat pagi