VBA Griffin編
【5】ユーザフォームを最小化する、最大化する、元のサイズに戻す
折角、ユーザフォームに最大化最小化ボタンを付けたので、最小化、最大化、元のサイズに戻すを
プロシージャを作成して制御してみました。
'以下を標準モジュールに記述する
Option Explicit
'■ユーザフォーム最小化
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Const SW_SHOWNORMAL = 1
Const SW_SHOWMINIMIZED = 2
Const SW_SHOWMAXIMIZED = 3
Const SC_MOVE = &HF010&
Sub window_show(a_uf As String, a_mod As String)
'a_uf:フォームのキャプション名</font><br>
'a_mod:最小化はmin,最大化はmax,元のサイズに戻すはnor</font><br>
On Error GoTo ErrProc
Dim hwnd As Long
Dim w_mod As Long
hwnd = FindWindow("ThunderDFrame", a_uf) 'ユーザーフォームのハンドルを取得する(captinを指定)
Select Case a_mod
Case "nor"
w_mod = SW_SHOWNORMAL
Case "min"
w_mod = SW_SHOWMINIMIZED
Case "max"
w_mod = SW_SHOWMAXIMIZED
Case Else
End Select
ShowWindow hwnd, w_mod 'ユーザーフォーム状態変更
Exit Sub
ErrProc:
MsgBox "Error番号:" & Err.Number & vbNewLine & _
"window_show" & Err.Source & vbNewLine & _
"Error内容:" & Err.Description, 16, "管理者連絡"
End Sub
'以下を対象とするユーザフォームに記述する
window_show(Me.Caption, "min") '最小化する