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.