Excel VBA – 讓 User Form 右上角出現放大縮小按鈕的方法

在撰寫 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)

(Visited 546 times, 7 visits today)

Wendell.Huang

科技公司嫌棄太活潑,消費品牌挑剔太沉悶..., 經常必須解釋自己在學什麼, 不小心就摔破對方眼鏡的跨領域玩家。

One Comment

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *