Menambahkan Tanda Maximize dan Minimize Pada Userform VBA

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.

Be the first to comment

Leave a Reply

Your email address will not be published.


*