在撰寫 Excel VBA 時,經常會用到 User Form 來製作呼叫面板,尤其是巨集準備要給別人使用的時候,有一個 User Form 可以省去很多麻煩。
User Form 雖然方便,但在設定上卻很死板,像是各種瀏覽器一定會有的放大縮小功能,沒有內建的選項可以設置:
透過程式的方式可以加以控制,例如這裡的 User Form 程式碼範例。
這樣使用起來其實不是很方便,有沒有方法可以在 User Form 上增加常見的放大縮小按鈕呢?
當然有,利用下面的程式碼,貼上到 User Form 當中可以了!
Private Declare Function FindWindow Lib
“user32″ Alias “FindWindowA" (ByVal lpClassName As String,
ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib
“user32″ (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Const SW_SHOWMAXIMIZED = 3
Private Declare Function GetWindowLong Lib
“user32″ Alias “GetWindowLongA" (ByVal hwnd As Long, ByVal
nIndex As Long) As Long
Private Declare Function SetWindowLong Lib
“user32″ Alias “SetWindowLongA" (ByVal hwnd As Long, ByVal
nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WS_MAXIMIZEBOX = &H10000
Private Const WS_MINIMIZEBOX = &H20000
Private Const GWL_STYLE = (-16)
Private Sub UserForm_Initialize()
Dim hwnd As Long
Dim lStyle As Long
hwnd = FindWindow(“ThunderDFrame", Me.Caption)
lStyle =
GetWindowLong(hwnd, GWL_STYLE)
lStyle = lStyle Or WS_MINIMIZEBOX
lStyle = lStyle Or WS_MAXIMIZEBOX
SetWindowLong hwnd, GWL_STYLE, lStyle
End Sub
由於已經分別將程式分類指定給 Declare 與 Initialize ,因此使用時就無須考慮,直接貼上就行了。
第一段中的只是做一些設定,第二段利用 1Style 變數,逐行賦予最大化、最小化的內容。
成果如下圖:
精選閱讀
* EXCEL 交互參照必學神器, 用 LOOKUP 系列函數一鍵搞定資料比對 : VLOOKUP篇
* 統計R語言實作筆記系列 – 2D視覺化進階 GGPLOT()的基本架構(一)
* 服務科學課程回顧: 應用商業分析(APPLIED BUSINESS ANALYTICS)
One Comment