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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
'ユーザーフォーム右上隅の[×]ボタンを表示しない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UPS警告音を止めたい
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
excel スクロールしても常にボ...
-
Accessのフォームでタブの色
-
AccessVBAでオプションボタン・...
-
複数シートのボタンに同一の動...
-
Excelで、ボタンにコメントをつ...
-
フォームコントロールから作っ...
-
オブジェクト名をVBAで指定...
-
マクロを登録しているボタンが...
-
EXCELの塗りつぶしのボタ...
-
エクセルで、オプションボタン...
-
EXCELのマクロが 実行時エラー5...
-
Excel ラジオボタンのリセット...
-
マクロ初心者です。 msgboxのre...
-
エクセルでマクロボタンを押す...
-
マクロで作ったボタンのサイズ...
-
エクセルでグループボックスを...
-
【Excel VBA】マクロボタンを表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
【Excel VBA】マクロボタンを表...
-
エクセルの画面にユーザーフォ...
-
Excel ラジオボタンのリセット...
-
Excelで、ボタンにコメントをつ...
-
EXCELのマクロが 実行時エラー5...
-
Accessのフォームでタブの色
-
マクロで作ったボタンのサイズ...
-
複数シートのボタンに同一の動...
-
excel スクロールしても常にボ...
-
ユーザーフォームをショートカ...
-
エクセルで、オプションボタン...
-
エクセルでグループボックスを...
-
Access VBAでボタンの背景色を...
-
オブジェクト名をVBAで指定...
-
マクロ初心者です。 msgboxのre...
-
EXCELの塗りつぶしのボタ...
-
マクロを登録しているボタンが...
-
VBAでクリアボタンのみ残してシ...
おすすめ情報