###前提・実現したいこと
VBAでユーザーフォームを表示するプログラムを作成しています。
ユーザーフォームに最大化、最小化ボタンを付属させるため
http://propg.ee-mall.info/プログラミング/vba/「excel-vba-ユーザーフォームをリサイズ可能にする/
こちらのサイトに掲載されているコードを参考に(というより丸パクリ)してプログラムを作成しました。
ここで質問なのですが、ユーザーフォームが表示されるときすでに最大化されているようにするためにはソースコードにどのようなプログラムを追加すれば良いのでしょうか?
UserForm.Width = Application.Width
UserForm.Height = Application.Height
というのではなく、最大化ボタンをクリックしたときの状態にしたいです。
拙い文章で申し訳ありませんが、回答よろしくお願いいたします。
###該当のソースコード
Private Declare PtrSafe Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long
Private Declare PtrSafe Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare PtrSafe Function DrawMenuBar Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare PtrSafe Function WindowFromAccessibleObject Lib "oleacc" ( _
ByVal pacc As Object, _
ByRef phwnd As Long) As Long
Private Const GWL_STYLE = (-16) 'ウィンドウスタイルを取得
Private Const WS_THICKFRAME = &H40000 'ウィンドウのサイズ変更
Private Const WS_MINIMIZEBOX = &H20000 '最小化ボタン
Private Const WS_MAXIMIZEBOX = &H10000 '最大化ボタン
Private Sub UserForm_Initialize()
Dim fStyle As Long
Dim hwnd As Long
'ユーザーフォームのハンドルを取得する
WindowFromAccessibleObject UserForm, hwnd
'ウィンドウに関する情報を取得する
fStyle = GetWindowLong(hwnd, GWL_STYLE)
'Min,Maxメニューボタンを付加する
fStyle = (fStyle Or WS_THICKFRAME Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX)
'ユーザーフォームのボタンを再設定する
SetWindowLong hwnd, GWL_STYLE, fStyle
'ユーザーフォームのメニューバー外枠を再描画する
DrawMenuBar hwnd
UserForm.Show
End Sub

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/18 09:16
2018/01/19 07:48