|
こんちは。
もうすんじゃったと思いますが。
ThisWorkbook.Saved が有るのを今まで思い出せませんでした。
これがあるのをすぐ思い出していれば、保存できないようにするで挫折することは無かったのに...。
バグ?確認用(要するにこれじゃダメって事です。)
Sheet1モジュール
Private Sub CommandButton1_Click()
Dim i As Integer
i = MsgBox("yesでファイル、noでエクセルを閉じます", vbYesNo)
If i = vbYes Then
ThisWorkbook.Close
Else
Application.Quit
End If
End Sub
ThisWorkBookモジュール
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("A1").Value = "何かの処理"
DoEvents
ThisWorkbook.Save
DoEvents
ThisWorkbook.Saved = True
End Sub
(注意)
ThisWorkbook.Closeでブックを閉じると保存してくれない。
一応ここは通っているのだけれど....。(バグくさいです。)
因みに、閉じるボタンでは保存されます。
Win98se & Exc2000SR1
****************************************
んなわけで、フラグ使ってこんな風に面倒くさい書き方をしないとダメみたいでした.
やっぱダメでしょうか?
標準モジュール
Public flg As Boolean
Sub hozon()
Range("A1").Value = "何かの処理"
ThisWorkbook.Save
End Sub
Sheet1モジュール
Private Sub CommandButton1_Click()
Dim i As Integer
i = MsgBox("yesでファイル、noでエクセルを閉じます", vbYesNo)
If i = vbYes Then
hozon
flg = True
ThisWorkbook.Close
Else
Application.Quit
End If
End Sub
ThisWorkBookモジュール
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If flg = False Then
hozon
End If
ThisWorkbook.Saved = True
End Sub
********************
保存できないようにするは、
Workbook_BeforeClose で、ThisWorkbook.Saved = True
Workbook_BeforeSave で、Cancel = True
と、するだけで十分でした。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'全く保存できないとテスト時に不都合なんで
'こんな風にしてあります。
If Range("A1").Value = "" Then
Cancel = True
End If
End Sub
|
|