
Tidak sedikit dari kita yang ingin menghilangkan tanda X pada Userform yang dibuat dengan VBA. Tanda X ini sebenarnya hampir bisa kita temui di Setiap UserForm di berbagai aplikasi PC. Karena fungsi dari tanda X yang berada di Pojok atas ini adalah untuk menutup aplikasi.

Mungkin banyak dari kita yang ingin menghilangkan X pada userform dengan mencari pada Properties Userform. Namun sayangnya pada Properti Userform tidak ada pilihan untuk itu. Yap! benar sekali, tanda X pada UserForm tidak bisa kita hilangkan dengan pilihan yang berada pada Properti windows. Namun harus menggunakan sedikit bantuan dari fungsi Windows yang disebut juga dengan Windows API.
Untuk Menghilangkan Tombol “x” pada UserForm kita membutuhkan Fungsi yang sudah disediakan oleh Windows. Fungsi ini yang akan kita panggil dan kita gunakan untuk menghilangkan tanda X. Karena Windows API ini berbeda-beda untuk 64bit dan 32bit dan juga VBA6 dan VBA7 saya akan coba buat untuk kondisi-kondisi yang berbeda diatas.
Langkah Pertama, Masuk ke VBE dan siapkan sebuah module, kemudian Copy script dibawah ini ke dalam Module.
Visual Basic EditorOption 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 #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 #End If Sub SembunyikanX(oForm As Object) Dim hwnd As Long Dim lStyle As Long hwnd = FindWindow("ThunderDFrame", oForm.Caption) lStyle = GetWindowLong(hwnd, -16) SetWindowLong hwnd, -16, lStyle And Not &H80000 End Sub
Pada kode diatas ada dua bagian, bagian pertama adalah Deklarasi untuk memanggil Windows API dan bagian kadua adalah Procedur Untuk menyembunyikan X dengan parameter Object Userform. Pada bagian kedua ada “ThunderDFrame” ini digunakan untuk MS Office 2000 keatas sedangkan untuk MS Office 1997 gunakan “ThunderXFrame” .
Setelah kode diatas kita copykan ke Module, Untuk Penggunaannya pada Userform, Masukan kode dibawah ini kedalan Initialize Userform yang ingin kita hilangkan tanda X nya.
Visual Basic EditorPrivate Sub UserForm_Initialize() Module1.SembunyikanX Me End Sub
Sampai sini sebenarnya sudah Selesai , namun karena tombol X pada userform sudah dihilangkan, jangan lupa untuk menambahkan sebuah Button atau Tombol, dimana tombol ini digunakan untuk menutup Userform. Untuk menutup userform bisa gunakan Script seperti dibawah ini.
Visual Basic EditorPrivate Sub CommandButton1_Click() Unlod Me End Sub

Jika dijalankan hasilnya akan seperti gambar diatas, Tanda X pada Pojok atas menghilang.
Leave a Reply