戻る    次へ

EXCELテーブルとVBA2htmlのアイコン画像VBA Griffin編

【4】ユーザフォームに最大化最小化ボタンを追加する

今回のようにユーザフォームとワークシート間でやり取りをする場合はユーザフォームを最小化できると ワークシートが操作しやすいのだが、元来ユーザフォームに最大化最小化ボタンを付けられない。 windowを管理するWindowsAPIによって実現できるので次回のリリースには対応します。
'以下を標準モジュールに記述する

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
    (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hWnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long

Public Declare Function DrawMenuBar Lib "user32" _
    (ByVal hWnd As Long) As Long

Public Const GWL_STYLE = (-16)       'ウィンドウスタイルを取得
Public Const WS_THICKFRAME = &H40000  'ウィンドウのサイズ変更
Public Const WS_MINIMIZEBOX = &H20000  '最小化ボタン
Public Const WS_MAXIMIZEBOX = &H10000  '最大化ボタン

'以下を対象とするユーザフォームを表示するプロシージャに記述する
Dim fRet As Long
Dim hWnd As Long
Dim fStyle As Long

'対象とするユーザーフォームを表示する
UserForm1.Show vbModeless

'ユーザーフォームのハンドルを取得する(注)第二引数はユーザーフォームのCaptionを指定する
hWnd = FindWindow("ThunderDFrame", "UserForm1")

'ウィンドウに関する情報を取得する
fStyle = GetWindowLong(hWnd, GWL_STYLE)

'Min,Maxメニューボタンを付加する
fStyle = (fStyle Or WS_THICKFRAME Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX)

'ユーザーフォームに追加したいボタンを設定する
fRet = SetWindowLong(hWnd, GWL_STYLE, fStyle)

'ユーザーフォームのメニューバー外枠を再描画する
fRet = DrawMenuBar(hWnd)


  戻る    次へ

掲載情報

2009.1.20にフリーソフトであるGriffinEXCELテーブルとVBA2htmlが紹介された本が発売されました。この本のP99にHTML関連として紹介されています。