
UserForm ใน Excel ไม่เหมือนใน .Net ที่จะกำหนดหน้าต่างย่อขยายได้แบบง่าย ๆ ครับ
ตัวอย่างด้านล่างนี้เป็นการใช้ Windows API เข้ามาช่วย
ทำตามลำดับดังนี้
A. แทรก Module เข้ามาใหม่ เพื่อวาง Code Windows API ด้านล่าง
Code: Select all
Public Const SW_MAXIMIZED = 3
#If VBA7 Or Win64 Then
Public Declare PtrSafe Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
Public Declare PtrSafe Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
#Else
public Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
public Declare Function ShowWindow Lib "user32" (ByVal _
hwnd As Long, ByVal nCmdShow As Long) As Long
#End If
ฺB. ในขั้นตอนการเรียก UserForm ให้เขียน on error resume next เพื่อปิดการฟ้อง เช่นด้านล่าง
Code: Select all
Sub Button1_Click()
'Sheet1.Activate
On Error Resume Next
UserForm1.Show
End Sub
C. ในตอน Initial ให้เพิ่ม Code ด้านล่าง
Code: Select all
Private Sub UserForm_Initialize()
Call ClearData
Sheet6.Activate
'day
comday.RowSource = "DATA!D2:D32"
'month
commonth.RowSource = "DATA!E2:E13"
'year
comyear.RowSource = "DATA!F2:F31"
'description
Combobox1.RowSource = "DATA!C2:C8"
Call ShowMaximized
End Sub
Private Sub ShowMaximized()
Call ShowWindow(FindWindow("ThunderDFrame", Me.Caption), SW_MAXIMIZED)
End Sub