• ベストアンサー

エクセルの×ボタンを消したい

エクセルで右上の×ボタン(閉じるボタン)を消したいのです。その下の×ボタンの消し方はわかったのですが一番上の一番右にある×ボタン(Windowsxpでは赤いボタン)の消し方がわかりません。もちろんVBAを使ってかまいません。どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答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自体を終了させるためのプロシージャが作れないと、結果的にはトラブルの元になりますので、ご注意ください。簡単なロジックの問題なのですが、慣れないと分らなくなることがあります。 なお、私は、仮に終了ボタンをどこかに置いても、右上の終了×ボタンを殺したりしません。そういうブックの作成にめぐり合わないだけかもしれませんが。

その他の回答 (2)

  • Kazupie
  • ベストアンサー率17% (56/323)
回答No.2

うろ覚えですが、アプリケーション上及びVB、VBAで「×ボタン(閉じるボタン)」の機能を無効にする方法は無かったと思います。 APIに、このような機能があるのかも知れませんが、エンドユーザーを惑わすようなことは、やめた方が無難だと思います。

  • RandyPlus
  • ベストアンサー率32% (91/279)
回答No.1

今、WinXPのマシンを立ち上げていないのでXPでの確認はしていませんが Win2000&EXCEL2000 でやってみたところ、全画面表示にすれば、エクセルの閉じるボタンは表示されないようでした。 これでは、ダメですか?

satooo
質問者

補足

早速の回答ありがとうございます。実はその方法は試してみたんですが、sheetの表示、非表示がVBAでうまくいかなくなってしまうんです。 Worksheets("データ").Visible = True のところでエラーになってしまうんでなやんでいるんです。

関連するQ&A