|
こんばんは、もうお休みになってますかね?
私はここの常連の解答者の皆様のように詳しい方ではありませんが、なかなか解答が付かないようなので、以下お答えさせて戴きます。
先ず、現行プログラムを見たところ、ファンクションプロシージャの中にメッセージボックスなど記述されてますが、ファンクションプロシージャはエクセルシート上で頻繁に使用するユーザー定義関数の設定、或いはマクロのプログラムの中で何度も特別な計算が繰返し必要になる場合に便利なもので、この中に計算目的以外のコードが含まれるのはちょっと違和感がありますね。
また、quit()で求められようとしている戻り値は、ThisWorkbook.Savedのプロパティを取得することで事足りると思います。
ということで、以下のように変更してみました。
Sub 終了()
If ThisWorkbook.Saved = False Then
strFilename = ThisWorkbook.Path & "\" & _
"データ作成" & "_" & _
Format(Date, "yyyymmdd") & ".xls"
strFilename = Application.GetSaveAsFilename( _
FileFilter:="Excelファイル,*.xls", _
InitialFileName:=strFilename, _
Title:="Excelファイルの保存")
If strFilename = "False" Then
If MsgBox("保存せずに終了します。よろしいですか?", _
vbOKCancel + vbInformation, _
"終了確認") = vbOK Then
ThisWorkbook.Saved = True
ThisWorkbook.Close
Else
Exit Sub
End If
Else
ActiveWorkbook.SaveAs strFilename
End If
Else
ThisWorkbook.Close
End If
End Sub
'------(このイベントプロシージャは言わずもがな標準モジュールではなく、ThisWorkbookのモジュールに記述して下さい。)------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
終了
End Sub
なお、私は外地に居るもので、もし更なるご質問がありましたら、直ぐにお答えできる時間帯か分かりませんので、他の人に助けてもらった方が早いかも。
|
|