
No.3ベストアンサー
- 回答日時:
こんばんは。
本来は、「×ボタン」機能だけを取ればよいはずなのですが……。
'<ThisWorkbook モジュール>
Dim OptionValue As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If OptionValue = False Then
Cancel = True
End If
End Sub
Sub KeyMacro_for_Quit()
'こちらのマクロを実行しないと終われない。
OptionValue = False
End Sub
もちろん、ボタン自体を消す方法は、ある程度VBAをやってきている人なら分ることですが、以下は、あまり好まれません。なお、「EnableFalse」「EnableTrue」が、実行ファイルです。
'<以下を全て標準モジュールに登録してください>
Private Declare Function GetSystemMenu Lib "user32.dll" ( _
ByVal hWnd As Long, _
ByVal bRevert As Long) As Long
Private Declare Function DeleteMenu Lib "user32.dll" ( _
ByVal hMenu As Long, _
ByVal nPosition As Long, _
ByVal wFlags As Long) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" ( _
ByVal hWnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Const SC_CLOSE As Long = &HF060&
Private Const MF_BYCOMMAND As Long = &H0&
Private Sub CloseButtonEnabled(Swich As Boolean)
Dim hWnd As Long
Dim hMenu As Long
Dim rc As Long
'"XLMAIN" Excelのクラス名
'XL 2000 用
hWnd = FindWindow("XLMAIN", Application.Caption)
'XL 2002 用は、以下でも可能
'Application.Hwnd
If Swich Then
hMenu = GetSystemMenu(hWnd, 1&)
Else
hMenu = GetSystemMenu(hWnd, 0&)
rc = DeleteMenu(hMenu, SC_CLOSE, MF_BYCOMMAND)
End If
rc = DrawMenuBar(hWnd)
End Sub
'----------------------------------
'実行ファイル
Sub EnableFalse()
'×をEnable Falseに
Call CloseButtonEnabled(False)
End Sub
Sub EnableTrue()
'×をEnable Trueに
Call CloseButtonEnabled(True)
End Sub
'----------------------------------
必要あって質問されているとは思いますが、当然のことですが、Application自体を終了させるためのプロシージャが作れないと、結果的にはトラブルの元になりますので、ご注意ください。簡単なロジックの問題なのですが、慣れないと分らなくなることがあります。
なお、私は、仮に終了ボタンをどこかに置いても、右上の終了×ボタンを殺したりしません。そういうブックの作成にめぐり合わないだけかもしれませんが。
No.2
- 回答日時:
うろ覚えですが、アプリケーション上及びVB、VBAで「×ボタン(閉じるボタン)」の機能を無効にする方法は無かったと思います。
APIに、このような機能があるのかも知れませんが、エンドユーザーを惑わすようなことは、やめた方が無難だと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(コンピューター・テクノロジー) PC利用中に勝手に起動する窓を消し去る方法を教えて下さい。 1 2023/05/08 16:48
- Visual Basic(VBA) Vba 電卓 一文字消すボタン 3 2022/05/04 13:40
- ノートパソコン Windows10のノートパソコンをさっきまで使っていて、指紋がついてたからぱっぱっとティッシュでキ 6 2022/07/13 01:52
- 国産車 中古車でスズキのスイフトZC13Sを購入しました。 写真の一番右にある赤く点灯しているボタンが何なの 3 2022/08/04 13:11
- セキュリティソフト 右下の広告の消し方 4 2023/06/15 08:51
- 企画・マーケティング ウェブ広告の無意味な「×」ボタンは規約や消費者保護関連の法律の違反には当たらないですか? 画面上にデ 2 2023/06/18 19:21
- Android(アンドロイド) ビデオカメラマークのアイコン無い 1 2023/04/09 12:34
- 学校 【見るだけ禁止!回答希望】 カーディガンのボタンをかけ間違えただけで担任がボタンに油性ペンで数字を書 2 2023/01/28 13:19
- 教えて!goo 「いいね」ボタンのキャンセル 1 2023/08/12 11:31
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UPS警告音を止めたい
-
【Excel VBA】マクロボタンを表...
-
フォームコントロールから作っ...
-
Excelシート上のマクロを登録し...
-
エクセルで、オプションボタン...
-
「この回答は参考になった」は...
-
InputBox関数でキャンセルボタ...
-
マクロで作ったボタンのサイズ...
-
Accessのフォームでタブの色
-
エクセルのラジオボタン
-
複数シートのボタンに同一の動...
-
マクロ ボタンをクリックしたら...
-
RealJukeboxからCD-Rにコピーで...
-
マクロ初心者です。 msgboxのre...
-
ダウンロード中に戻る
-
Excelで、ボタンにコメントをつ...
-
エクセルの画面にユーザーフォ...
-
エクセルでマクロボタンを押す...
-
EXCELの塗りつぶしのボタ...
-
ボタンを画像で作るか、CSSでデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
【Excel VBA】マクロボタンを表...
-
フォームコントロールから作っ...
-
エクセルの画面にユーザーフォ...
-
入力済み、選択したセルに連動...
-
EXCELのマクロが 実行時エラー5...
-
Excel ラジオボタンのリセット...
-
複数シートのボタンに同一の動...
-
マクロで作ったボタンのサイズ...
-
オブジェクト名をVBAで指定...
-
ユーザーフォームをショートカ...
-
エクセルで、オプションボタン...
-
マクロを登録しているボタンが...
-
Excelで、ボタンにコメントをつ...
-
EXCELの塗りつぶしのボタ...
-
VBAでクリアボタンのみ残してシ...
-
excel スクロールしても常にボ...
-
VBAでオプションボタンなどそれ...
-
エクセルでマクロボタンを押す...
おすすめ情報