質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

17007閲覧

ユーザーフォームの最大、最小化コード

cd987456

総合スコア33

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2017/05/24 04:23

VBAのユーザーフォームに最大化、最小化ボタンを付けたくてネットを調べたところ
コードが記載されていました。
コードを転記したところ、ユーザーフォームに最大最小ボタンが追加されました。

教えて頂きたいことはVBAのコード内でユーザーフォームを最大化、最小化する為のコードが
分かりません。

下記のコードからVBAのコード内でユーザーフォームを最大化、最小化する為のコードを
教えて頂けませんか?

'標準モジュールに下記のコードを追記します。 Option Explicit 'ユーザーフォームの最大最小ボタン追加 Private Const GWL_STYLE = (-16) Private Const WS_THICKFRAME = &H40000 Private Declare Function GetWindowLong Lib "user32" _ Alias "GetWindowLongA" _ (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" _ Alias "SetWindowLongA" _ (ByVal hwnd As Long, _ ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetActiveWindow Lib "user32" () As Long Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long Public Function CustomizeForm() Dim Ret 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 Ret = SetWindowLong(hwnd, GWL_STYLE, Wnd_STYLE) Ret = DrawMenuBar(hwnd) End Function 'ユーザーフォームに下記コードを追加します。 Private Sub UserForm_Activate() CustomizeForm End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

APIでできました。
サンプルなのでShowWindowの第一引数はGetActiveWindow()にしていますが、CustomizeForm()で取得しているhwndをグローバル化して使いまわした方がすっきりするかもしれません。お好みで。

VBA

1Const SW_SHOWNORMAL = 1 2Const SW_SHOWMINIMIZED = 2 3Const SW_SHOWMAXIMIZED = 3 4Private Declare Function ShowWindow Lib "User32" (ByVal Hwnd As Long, _ 5 ByVal nCmdShow As Long) As Long 6 7Private Sub test() 8 ' 通常 9 Call ShowWindow(GetActiveWindow(), SW_SHOWNORMAL) 10 ' 最小化 11 Call ShowWindow(GetActiveWindow(), SW_SHOWMINIMIZED) 12 ' 最大化 13 Call ShowWindow(GetActiveWindow(), SW_SHOWMAXIMIZED) 14End Sub

投稿2017/05/24 04:50

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cd987456

2017/05/24 06:07

回答ありがとうございます。 上手く処理できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問