如何解决即使用户选择取消,退出但仍保存
我有一件奇怪的事情(我认为)但可能在这里做错了一些事情。我试图强迫用户在 excel 中输入某些信息。 MSGBox出现了OK /取消按钮,但选择任一时,工作簿保存并退出。如果他们取消,那么我希望它位于问题所在的单元格上。任何帮助将不胜感激
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
'---------------------------
'-- Missing Employee Name --
'---------------------------
If Cells(5,2).Value = Empty Then
If Not MsgBox("Employee Name missing! Pressing OK will exit without saving.",vbOKCancel,"The Mill") = vbOK Then
With Sheets("sheet1")
.Activate
.Cells(5,2).Activate
End With
Cancel = True
Exit Sub
End If
End If
End Sub
解决方法
我认为问题在于您没有处理 Workbook_BeforeClose
,它会在您尝试关闭工作簿时触发。
因此,虽然保存被取消,但关闭不会。
将所有内容移动到 Workbook_BeforeClose
并在那里处理它是有效的,直到用户手动保存。所以你仍然需要在 before save 事件中处理它。
这是一个例子:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Cells(5,2).Value = Empty Then
If MsgBox("Employee Name missing! Pressing OK will exit without saving.",vbOKCancel,"The Mill") = vbOK Then
Application.DisplayAlerts = False
Application.Quit
Else
Sheets("Sheet1").Cells(5,2).Activate
Cancel = True
End If
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean,Cancel As Boolean)
If Cells(5,2).Value = Empty Then
Cancel = True
MsgBox "Employee Name missing!"
Sheets("Sheet1").Cells(5,2).Activate
End If
End Sub
我看到的唯一警告是 Application.DisplayAlerts = False
会影响其他打开的工作簿。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。