Excel VBA实现:A列非空单元格非dd-mm-yy格式时禁止保存文件
Excel保存校验:强制A列非空单元格为dd-mm-yy日期格式
我有一个供用户粘贴数据的Excel工作表,要求执行保存操作(包括保存、另存为或快捷键Ctrl+S)时,第一列(A列)中的所有非空单元格必须采用dd-mm-yy日期格式,否则禁止保存该文件。
对应的VBA代码如下:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim cell As Range For Each cell In Range("A2:A1048576") If Not IsEmpty(cell) Then If IsDate(cell) Then If Not Format(cell, "dd-mm-yy") = cell Then MsgBox "无法保存此文件,因为并非所有数据都已正确填写。", vbCritical Cancel = True Exit Sub End If Else MsgBox "无法保存此文件,因为并非所有数据都已正确填写。", vbCritical Cancel = True Exit Sub End If End If Next cell End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.ThisWorkbook.Saved = True End Sub
代码说明
Workbook_BeforeSave事件:触发保存操作时,遍历A2到A列最后一行的所有单元格,逐一检查非空单元格:- 先判断是否为日期类型;
- 再验证日期显示格式是否为
dd-mm-yy; - 只要有一个单元格不符合要求,就弹出错误提示并取消保存。
Workbook_BeforeClose事件:设置工作簿为已保存状态,避免关闭时因未保存修改而弹出提示。
内容的提问来源于stack exchange,提问作者Babs
相关产品推荐
相关产品推荐

