Pada artikel sebelumnya, Excelnoob sudah membahas tentang menghilangkan Tanda X pada Userform yang bisa di baca disini. Pada pembahasan kali ini, kita akan membuat sebuah UserForm tanpa Bar Judul atau Title Bar. Masih menggunakan API yang sama seperti pada menghilangkan tanda X. Jadi untuk memodif Form Bawaan dari UserForm ini harus menggunkan bantuan dari Windows API.
Hasil dari menghilangkan Title Bar di Userform VBA akan terlihat seperti pada gambar dibawah ini.

Membuat UserForm Tanpa Title Bar
Untuk membuat sebuah userform tanpa titlebar seperti diatas, memang membutuhkan Windows API agar hal ini bisa dilakukan. Windows API yang digunakan bisa dilihat pada script dibawah ini, copy script ini kedalam Module
Option Explicit Rem Auth : ExcelNoob.com #If VBA7 And Win64 Then Private Declare PtrSafe Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Private Declare PtrSafe Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare PtrSafe Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Declare PtrSafe Function DrawMenuBar Lib "user32" _ (ByVal hWnd As Long) As Long #Else 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 Public Declare Function DrawMenuBar Lib "user32" _ (ByVal hWnd As Long) As Long #End If Sub SembunyikanJudul(oForm As Object) Dim Style As Long, Menu As Long, hWndForm As Long hWndForm = FindWindow("ThunderDFrame", oForm.Caption) Style = GetWindowLong(hWndForm, &HFFF0) Style = Style And Not &HC00000 SetWindowLong hWndForm, &HFFF0, Style DrawMenuBar hWndForm End Sub
Jika script diatas sudah dimasukan ke dalam Module, cara pengguna pada UserForm akan lebih mudah. Untuk Pengunaan Script API diatas, simpan kode dibawah ini kedalam UserForm_Initialize di UserForm yang ingin dihilangkan TitleBarnya.
Private Sub UserForm_Initialize() 'Sembunyikan Title Bar SembunyikanJudul Me End Sub
Hati-hati dalam menggunakan script diatas, yang perlu diingat adalah dengan menghilangkan Title Bar atau Bar Judul, maka akan menghilangkan juga tanda X pada userForm yang berfungsi untuk menutup userform. Jadi jangan lupa Untuk menambahkan 1 tombol keluar, untuk memudahkan keluar dari UserForm. Tapi jika sudah terlajur dijalankan dan lupa menambahkan tombol keluar, jangan dulu panik, karena masih bisa keluar dengan Shortcut Keyboard ALT + F4.
Dan berikut ini adalah hasil Sebelum dan sesudah title Bar dihilangkan. Perbedaan dari keduanya bisa dilihat pada Gambar dibawah ini.

Pada userForm2 tidak menggunakan API untuk Menyembunyikan TitleBar sedangkan pada UserForm1 menggunakan API sembunyikan TitleBar.
Drag Userform Tanpa Title Bar
Selain tombol keluar yang harus ada, Userform tanpa titlebar (Borderless) ini juga akan menyebabkan Userform tidak bisa di geser atau di Drag dengan mengunakan Mouse. Agar Userform bisa di Drag atau di geser-geser dengan mouse, tambahkan script dibawah ini pada UserForm.
Private m_sngDownX As Single Private m_sngDownY As Single Private Sub UserForm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 1 Then m_sngDownX = X m_sngDownY = Y End If End Sub Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button And 1 Then Me.Left = Me.Left + (X - m_sngDownX) Me.Top = Me.Top + (Y - m_sngDownY) End If End Sub
Dengan menambahkan script diatas, sekarang userform bisa di digeser-geser dengan menggunakan mouse walaupun sudah dihilangkan Titlebar dari userform tersebut.
Leave a Reply