有一个名为ABC.xls
的文件,其中包含宏。现在,当我按下Ctrl + M
时,将调用该宏的子程序。
这个子程序会打开一个“打开文件”对话框,用户可以选择一个CSV
文件。因此,这个宏用于处理和保存CSV
文件。
下面是在按下Ctrl + M
时调用的代码。
Sub runProperChangeSubroutine() ' Assigned to shortcut key CTRL + M.
file_name = ActiveWorkbook.Name ' Gets the file name.
Application.Run file_name & "!ChangeSub"
End Sub
当用户关闭工作簿时,我需要测试一个条件,就是每一行的CSV
是否有终止字符串。如果没有这个终止字符串,我应该弹出一个消息框告诉用户并阻止工作簿的关闭。
所以我做了以下操作...
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim improperRowNumber As Integer
Dim BlnEventState As Boolean
improperRowNumber = returnImproperRow()
BlnEventState = Application.EnableEvents
Application.EnableEvents = True
If improperRowNumber <> -1 Then
Cancel = True
MsgBox "The row number " & improperRowNumber & " is not ending with '@/#'. Please correct the row before closing."
Else
Call saveCSV
End If
Application.EnableEvents = BlnEventState
End Sub
当点击关闭按钮(右上角的X标记,关闭工作簿。我不是关闭Excel),我能看到消息框,但工作簿会关闭。如果行没有正确结束,我希望用户进行一些编辑。请给出建议。
编辑:
由于上述代码不起作用,我在消息框后使用了ThisWorkbook.Saved=False
,如下所示...
If improperRowNumber <> -1 Then
MsgBox "The row number " & improperRowNumber & " is not ending with '@/#'. Please correct the row before closing."
Application.DisplayAlerts = False
ThisWorkbook.Saved = False
Cancel = False
Else
现在它显示“
是否保存更改...
”消息框。如果我在消息框上单击取消
按钮,则工作簿不会关闭。有没有办法自定义消息框文本或按钮,或隐藏此
保存
消息框?
Workbook_BeforeClose
代码放在哪个文件中?你试图防止哪个文件关闭?-- 我并不是要挑剔,但这些都是重要的细节,可以帮助人们提供有用的答案,并解决你可能存在的任何错误假设。 - AjimOthy