【发布时间】:2021-08-19 17:14:30
【问题描述】:
我有一件奇怪的事情(我认为),但可能在这里做错了。我试图强制用户在 excel 中输入某些信息。 The msgbox comes up with the OK/Cancel buttons but when either is selected the workbook saves and exits.如果他们取消,那么我希望它位于问题所在的单元格上。任何帮助将不胜感激
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
【问题讨论】:
-
您的代码不会将“确定”按钮视为
True条件。要考虑它True,您必须从If Not MsgBox(...中删除Not。然后,您应该消除Exit Sub。让事件解释Cancel选项。 -
我删除了“Exit Sub”并让它通过,但它仍然做了同样的事情。如果我不按 OK,那是不是说明它没有被取消,所以 Cancel 默认设置为 False?
-
对于“确定”按钮,现在它会退出而无需保存...感谢 FaneDuru 的提示。在取消时,我希望 excel 保持打开并定位在需要注意的单元格中。在这种情况下,缺少员工姓名。目前它退出而不保存,而不是移动到“Sheet1”到该单元格位置。
-
我喜欢相信我从一开始就理解它......这就是我提出这些建议的原因。很高兴我能帮上忙!