微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使用户选择取消,退出但仍保存

如何解决即使用户选择取消,退出但仍保存

我有一件奇怪的事情(我认为)但可能在这里做错了一些事情。我试图强迫用户在 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 举报,一经查实,本站将立刻删除。