
Pada userform yang dibuat dengan VBA tidak memiliki sebuah tombol untuk maximize dan juga Minimize, hanya ada tombol [x] saja yang berfungsi untuk menutup userform. Untuk menambahkan tombol Maximize dan minimize seperti pada Userform pada umumnya, kita harus menambagkan sedikit script dari Windows API. Karena Pada setingan Userform juga kita tidak akan menemukan setingan untuk menampilkan kedua tombol ini.

Untuk menambahkan tombol Maximize dan Minimize pada userform, masuk ke Visual Basic Editor dengan menekan tombol ALT + F11
atau melalui Menu Developer. Selanjutnya buat sebuah module baru lalu copy script dibawah ini. dan paste di Module tersebut.
Option Explicit Rem Auth : ExcelNoob.com Public Const GWL_STYLE As Long = -16 Public Const WS_MINIMIZEBOX = &H20000 Public Const WS_MAXIMIZEBOX = &H10000 Public Const WS_FULLSIZING = &H70000 #If VBA7 And Win64 Then Public Declare PtrSafe Function FindWindowA& Lib "user32" _ (ByVal lpClassName$, ByVal lpWindowName$) Public Declare PtrSafe Function GetWindowLongA& Lib "user32" _ (ByVal hwnd&, ByVal nIndex&) Public Declare PtrSafe Function SetWindowLongA& Lib "user32" _ (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&) #Else Public Declare Function FindWindowA& Lib "user32" _ (ByVal lpClassName$, ByVal lpWindowName$) Public Declare Function GetWindowLongA& Lib "user32" _ (ByVal hwnd&, ByVal nIndex&) Public Declare Function SetWindowLongA& Lib "user32" _ (ByVal hwnd&, ByVal nIndex&, ByVal dwNewLong&) #End If Public Sub InitMaxMin(mCaption As String, _ Optional Max As Boolean = True, _ Optional Min As Boolean = True, _ Optional Sizing As Boolean = True) Dim hwnd As Long hwnd = FindWindowA(vbNullString, mCaption) If Min Then SetWindowLongA hwnd, _ GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_MINIMIZEBOX If Max Then SetWindowLongA hwnd, _ GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_MAXIMIZEBOX If Sizing Then SetWindowLongA hwnd, _ GWL_STYLE, GetWindowLongA(hwnd, GWL_STYLE) Or WS_FULLSIZING End Sub
Semua windows API yang ada di ExcelNoob sudah dibuat agar bisa berjalan di Windows 32-bit dan juga 64-bit. Jadi tinggal copy dan paste saja ke dalam module.
Script diatas baru sebatas deklarasi Windows API dan Prosedur InitMaxmin. Untuk penggunaan pada UserForm, tambahkan script dibawah ini kedalam Userform_Initilize
didalam Userform yang ingin ditambahkan tombol Maximize dan juga Minimize.
Private Sub UserForm_Initialize() InitMaxMin Me.Caption End Sub
Tombol Max dan Min sengaja dibuat Optional agar bisa disesuaikan dengan keinginan. Misalnya jika ingin menampilkan tombol Maxmize saja dan tidak menggunakan Minimize, script bisa dibuat seperti ini
Private Sub UserForm_Initialize() InitMaxMin Me.Caption, Min:=False End Sub
Begitu juga dengan Parameter atau Argumen yang lain, bisa disesuaikan.
Leave a Reply