📅  最后修改于: 2023-12-03 15:14:55.705000             🧑  作者: Mango
在 Excel VBA 中,有时我们需要防止用户在特定情况下保存工作簿。一种常见的情况是,如果某些数据未经过完整计算或验证,我们希望用户不能保存工作簿,以免数据错误。
在此介绍几种实现方式:
Workbook_BeforeSave 事件可以在用户保存工作簿之前触发,我们可以在该事件中添加判断条件,如果不满足条件,则取消保存操作。示例代码如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not CheckDataValidity() Then ' 判断数据是否合法
MsgBox "数据未验证,请确认数据正确后再次保存。", vbExclamation, "保存失败"
Cancel = True ' 取消保存
End If
End Sub
Function CheckDataValidity() As Boolean
' 检查数据是否合法,返回 True 或 False
End Function
Workbook_BeforeClose 事件可以在用户关闭工作簿之前触发,我们可以在该事件中添加判断条件,如果不满足条件,则提示用户不能关闭工作簿。示例代码如下:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not CheckDataValidity() Then ' 判断数据是否合法
MsgBox "数据未验证,请确认数据正确后再次关闭。", vbExclamation, "关闭失败"
Cancel = True ' 取消关闭
End If
End Sub
Function CheckDataValidity() As Boolean
' 检查数据是否合法,返回 True 或 False
End Function
我们还可以通过修改菜单选项或隐藏工具栏中的保存按钮,从而防止用户保存工作簿。示例代码如下:
' 隐藏工具栏中的保存按钮
Application.CommandBars("Standard").Controls("保存").Visible = False
' 隐藏菜单栏中的保存按钮
Application.CommandBars("Worksheet Menu Bar").Controls("保存(&S)").Visible = False
以上是几种防止用户保存工作簿的方法,根据实际需求选择合适的方式实现。