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.