ユーザー操作でユーザーフォームをリサイズする方法

スポンサーリンク

ユーザー操作でユーザーフォームの大きさを変更する方法を説明していきます。

コード

モジュール側のコード

適当なモジュールに以下のコードを貼り付けてください。

Option Explicit

'フォームリサイズに使用するWindows API宣言(64bit/32bit両対応)
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME = &H40000
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 GetActiveWindow Lib "user32" () As Long
Private Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long

''' <summary>
''' ' フォームをリサイズ可能な状態に変更
''' </summary>
''' <remarks></remarks>
Public Sub FormRisizeSetting()
    Dim result As Long
    Dim hwnd As Long
    Dim Wnd_STYLE As Long

    hwnd = GetActiveWindow()
    Wnd_STYLE = GetWindowLong(hwnd, GWL_STYLE)
    Wnd_STYLE = Wnd_STYLE Or WS_THICKFRAME Or &H30000

    result = SetWindowLong(hwnd, GWL_STYLE, Wnd_STYLE)
    result = DrawMenuBar(hwnd)
End Sub

ユーザーフォーム側のコード

以下のコードをユーザーフォームに張り付けてください。

''' <summary>
''' 'フォームをリサイズ可能な状態にする
''' </summary>
''' <remarks></remarks>
Private Sub UserForm_Activate()
    Call FormRisizeSetting
End Sub

実際の動作

ユーザー側の操作でフォームサイズは変更できますが、コントロールの位置や大きさは変わりません。

フォームサイズの変更に合わせて、コントロールの位置や大きさを変えたい場合は以下の記事を参考にしてみてください。

タイトルとURLをコピーしました