http://www.serpress.co.jp/excel/vba047.html
ここを参考にユーザーフォームに最小化のボタンをつけたのですがこの最小化を任意にするにはどうしたらいいでしょうか?
具体的にはユーザーフォームのボタンから他のエクセルを開いた時にとりあえずユーザーフォームを最小化しておきたいのです
フォーム自体を小さくすることも考えたのですがまた戻すのが面倒でした。
ですので上記で作成したボタンを実行するには
どうしたらいいでしょうか?
是非皆様のお力を貸してください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
ボタンって手動で行うためのものですよね。
わざわざそれをつけたのですから、手動でおこなうべきではないでしょうか。
そうでないなら、幅と高さを任意に設定できるわけですから
面倒でもそれを指定するしかないかと。。。。
(「最小化」とは違って最小化より少し大きい状態までしか小さくできないはずです。)
No.2
- 回答日時:
一旦表示されてから、最小化されるのが見えるのがいまいちですが、とりあえず出来ます。
遅いのはxl2010の所為かな?
☆標準モジュール
Sub test()
UserForm1.Show vbModeless
End Sub
☆UserForm1モジュール
Private Declare Function FindWindow Lib "USER32" Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
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 DrawMenuBar Lib "USER32" _
(ByVal hWnd As Long) As Long
Private Declare Function CloseWindow Lib "USER32" (ByVal hWnd&) As Long
Private Const GWL_STYLE = (-16)
Private Const WS_THICKFRAME = &H40000
Private Const WS_MINIMIZEBOX = &H20000
Private Const WS_MAXIMIZEBOX = &H10000
Dim hWnd As Long
Private Sub UserForm_Initialize()
Dim fStyle As Long
Dim fRet As Long
hWnd = FindWindow("ThunderDFrame", Me.Caption)
fStyle = GetWindowLong(hWnd, GWL_STYLE)
fStyle = (fStyle Or WS_THICKFRAME Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX)
fRet = SetWindowLong(hWnd, GWL_STYLE, fStyle)
fRet = DrawMenuBar(hWnd)
End Sub
Private Sub UserForm_Activate()
Dim fRet As Long
fRet = CloseWindow(hWnd)
End Sub
No.3
- 回答日時:
#2です。
追伸。xl2003で試したところ、CPUの周波数は半分程度のマシンにもかかわらず、元サイズのウィンドウの表示はほとんど分からないレベルでした。こんなところもxl2010は遅い事が分かりました。
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) vba メモリ節約 3 2022/09/16 21:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームを表示中にシ...
-
Hideについて(.NET)
-
Form_Load と Form_Activate の...
-
エクセルVBAのフォームを最...
-
ユーザーフォーム上に現在日時...
-
【VBAユーザーフォームで閉じる...
-
ユーザーフォームのラベルに時...
-
MSGBOXのフォント大きさ変更
-
コントロールの存在確認
-
Microsoft Formsの「個人情報や...
-
VBAでユーザーフォームを再表示...
-
フォームのテキストボックスな...
-
ACCESSのフォーム、開くんです...
-
アクセス2013 フォームが...
-
エクセルのチェックボックスの...
-
ExcelVBAのユーザーフォームでe...
-
ユーザーフォームのテキストボ...
-
クリックイベントなのに、2回ク...
-
フォームのアクティブと非アク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
クリックイベントなのに、2回ク...
-
ExcelVBAのユーザーフォームの...
-
ユーザーフォームのテキストボ...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォーム上に現在日時...
-
Form_Load と Form_Activate の...
-
モーダルフォームとモードレス...
-
Excelにて、ユーザーフォームで...
-
VBAでユーザーフォームを再表示...
-
【VBAユーザーフォームで閉じる...
-
MSGBOXのフォント大きさ変更
-
VBA(エクセル)のユーザー...
-
Hideについて(.NET)
-
エクセルVBAのフォームを最...
-
コントロールの存在確認
-
ACCESSのフォーム、開くんです...
-
'ユーザーフォーム右上隅の[×...
-
フォームウィンドウを最前面に...
-
ユーザーフォームのラベルに時...
おすすめ情報