プロが教える店舗&オフィスのセキュリティ対策術

初めて質問させていただきます。
VBA初心者の為、質問自体に不足があるかもしれませんが、ご協力をお願い致します。

エクセル2000(SP3)で複数のブック(仮にA.xls,B.xlsとします)を起動した状態で、Aをマクロを使って保存せずに終了させたところ、Bの操作が出来なくなります。(セル選択等もできません。Bのsheetを選択するとアプリケーションエラーになってしまいます)
同Windows上に他アプリケーションが起動している場合、それらを一度選択してから再度Excelを選択すると、Bの操作が可能になります。
保存せずに終了させる為のマクロは次のとおりです。
ブックAのThisWorkbook内に記述しています。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Workbooks.count = 1 Then
Application.DisplayAlerts = False
Application.Quit
Else
ThisWorkbook.Close SaveChanges:=False
End If
End Sub
以上、よろしくお願い致します。

A 回答 (1件)

Workbook_BeforeCloseイベントはClose『前』に実行されるイベントで、


そのイベント実行後に、何もしなくてもBookはCloseします。
(イベント内でCancel = True にしなければ)
イベント内で
>ThisWorkbook.Close
を記述してしまうと、そのCloseメソッドによって、
またBeforeCloseイベントを呼び出してしまいます。
>ThisWorkbook.Close
は不要です。というより記述してはいけません。

保存せずに閉じる場合は Savedプロパティ を True にしてあげれば
「保存しますか?」のメッセージは表示されません。

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  If Workbooks.Count = 1 Then
    Application.DisplayAlerts = False
    Application.Quit
  Else
    ThisWorkbook.Saved = True
    'ThisWorkbook.Close SaveChanges:=False
  End If
End Sub
    • good
    • 0
この回答へのお礼

早速のご回答、本当にありがとうございます。
イベント名の通りの挙動でしたね。
ご指摘のとおりClose記述をコメントアウトしたところ、期待通りの動作が確認できました。

お礼日時:2008/10/28 17:41

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