Cara Menghilangkan X di UserForm VBA

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 Editor 
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
#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 Editor 
Private 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 Editor 
Private Sub CommandButton1_Click()
Unlod Me
End Sub
Menghilangkan X pada Userform VBA

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

Be the first to comment

Leave a Reply

Your email address will not be published.


*