10秒目をつむったら…

いつもお世話になります

今、UserFormからExcelシートのサイズが変更できなくて悩んでいます。
本来のプログラムはUserFormからInputBoxで最小にしてあるシートのデータを
参照するときにそのシートのサイズを最大にしたいのですが、上手くできません。

下記のサンプルプログラムは質問用に作りました。
UserForm1を呼び出す前にシートのサイズを最小にして、
UserFirm1で最大にしているだけですが、出来ていません

(Sample)
Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As Boolean
Declare PtrSafe Sub SetForegroundWindow Lib "user32" (ByVal hwnd As LongPtr)

Sub test()
'...ユーザフォームのクラス名を指定
FormClassName = "ThunderDFrame"
'...ウィンドウのハンドルを取得
hwnd = FindWindow(FormClassName, vbNullString)
'...表示(最小化されている場合は、これがないと表示状態になりません)
check = ShowWindow(hwnd, 3)
'...最前面表示
SetForegroundWindow hwnd

VBA.AppActivate Excel.Application.Caption
Application.WindowState = xlMinimized

UserForm1.Show

End Sub

(UserForm1)
Private Sub UserForm_Activate()

UserForm1.Top = 100
UserForm1.Left = 600

VBA.AppActivate Excel.Application.Caption
Application.WindowState = xlMaximized

End Sub

もし良い方法があれば教えてください
以上、よろしくお願い申しあげます

A 回答 (1件)

こんばんは



状況がイマイチよくわかっていませんけれど・・・

>そのシートのサイズを最大にしたいのですが~~
シートと言うよりもエクセルのウィンドウ表示を最大化すれば良いのですよね?

APIを使っているようですが、VBAを記述してあるブックを最大化すれば良いのなら、
 ThisWorkbook.Windows(1).WindowState = xlMaximized
だけでできませんか?
(当方の環境では、ウィンドウを最小化した状態からでも、上記で最大化表示できます)
    • good
    • 0
この回答へのお礼

いつもお世話になります

実はもう一つAutoCadの画面があって
AutoCadの画面の上にUserformが表示して、WorkSheetは最小表示に
しています
この時にInputBoxでWorksheetのデータを参照するとき、
WorkSheetを最大にしてWorkSheetをコントロールしたいと思っています
画面の順番は
①UserForm-AutoCad-Worksheet(最小)
(InputBox操作)
②UserForm-WorkSheet-AutoCad
になります

すみません、ながながと
ご教授頂いたステートメントで試してみます
まずはお礼まで

お礼日時:2024/08/20 09:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A