LoginSignup
0
0

ExcelVBAフォーム最大化時のフォームサイズ変更

Last updated at Posted at 2023-06-09

最大化時にサイズが変更できないエラー384

  1. Win32APIを使用すると下図のようにUserFormのタイトルバー最小化、最大化ボタンを追加することができる。
    image.png

  2. 最大化された状態で「UserForm1.Height = 500」のようにフォームサイズを変更しようとすると下図のような「実行時エラー'384'最大化または最小化されているフォームは、移動またはサイズ変更することができません。」というエラーが発生する。
    image.png

解決方法

タイトルバーの拡大縮小ボタン用のAPIに加え以下のAPIを追加する。

Option Explicit
'Windows API宣言
Private Declare Function ShowWindow Lib "User32" (ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long


次にフォームを変更するプログラムの前に「Call ShowWindow(GetActiveWindow(), 1)」を追加する。

Private Sub CommandButton1_Click()
    Call ShowWindow(GetActiveWindow(), 1) 'フォームのサイズを元に戻す
    UserForm1.Height = 500 'フォームのサイズ変更
End Sub

これでサイズ変更が可能になる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0