Resize Userform

Pada materi kali ini, saya membahas tentang Windows API yang digunakan untuk me-resize sebuah Userform.

Jika kamu pernah membuat sebuah Userform didalam VBA, Userform yang dibuat ketiak dijalankan ukurannya akan sama ketika Userform dibuat. Dan Userform tersebut tidak bisa di Resize.

Agar sebuah Userform bisa di resize maka perlu menggunakan salah satu fungsi dari Windows API yang bernama SetWindowLongA.

Untuk membuat API tambahkan script dibawah ini kedalam module.

'-----------------------------------------
' Sctipt VBA    : resize Userform
' Author        : https://vba.co.id
'                 Situs belajar VBA No.1
'                 di Indonesia
'-----------------------------------------

#If VBA7 And Win64 Then
    Private Declare PtrSafe Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
        ByVal hwnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long
    Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
    Private Declare PtrSafe Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
        ByVal hwnd As Long, _
        ByVal nIndex As Long) As Long
#Else
    Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" ( _
        ByVal hwnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" ( _
        ByVal hwnd As Long, _
        ByVal nIndex As Long) As Long
#End If

Private Const GWL_STYLE = -16
Private Const WS_THICKFRAME = &H40000


Sub BuatResize(xCaption)
Dim hwnd As Long
Dim SStyle As Long

hwnd = FindWindow("ThunderDFrame", xCaption)
SStyle = GetWindowLong(hwnd, GWL_STYLE) Or WS_THICKFRAME

SetWindowLong hwnd, GWL_STYLE, SStyle
End Sub

Kemudian untuk membuat Userform yang dimaksud bisa memiliki resize, tambahkan pada Userform_Initialize berupa script dibawah ini.

Private Sub UserForm_Initialize()
BuatResize Me.Caption
End Sub

Jika butuh penjelasan yang lebih detail, kamu juga bisa tonton tutorial ini melalui tutorial video dibawah ini

Nah itulah bagaimana cara menambahkan resize pada UseForm di VBA.

Leave a Reply

Your email address will not be published. Required fields are marked *

Chat WhatsApp
WhatsApp