Excel表格中如何设置特定日期后表格失效_利用VBA事件触发保护锁定
发布时间 - 2026-02-02 00:00:00 点击率:次Excel工作表可通过VBA实现自动失效锁定:一、Workbook_Open事件在打开时检测日期并保护;二、Worksheet_Activate事件在激活时动态拦截编辑;三、结合Z1单元格设定失效日与当日动态密码解锁机制。
如果您希望Excel工作表在特定日期之后自动失效并锁定,可以通过VBA事件(如Workbook_Open或Worksheet_Activate)实时检测系统日期,并在过期后启用保护、禁用编辑。以下是实现该功能的多种方法:
一、使用Workbook_Open事件自动检测并锁定
该方法在每次打开工作簿时触发检查,若当前日期超过设定的截止日期,则立即启用工作表保护并提示用户,阻止进一步编辑。
1、按 Alt + F11 打开VBA编辑器。
2、在左侧“工程资源管理器”中双击 ThisWorkbook。
3、在代码窗口中粘贴以下VBA代码:
Private Sub Workbook_Open()
Dim expiryDate As Date
expiryDate = #12/31/2025# '请替换为您设定的失效日期
If Date > expiryDate Then
ActiveWorkbook.Protect Password:="locked"
MsgBox "本工作表已过期,所有工作表已被锁定。", vbExclamation
ThisWorkbook.Sheets(1).Protect Password:="locked"
End If
4、关闭VBA编辑器,将工作簿另存为启用宏的格式(.xlsm)。
二、使用Worksheet_Activate事件动态拦截编辑
该方法在用户切换到任一工作表时触发检测,即使工作簿已打开多日,也能在首次访问时即时响应过期状态,并通过取消Select和Edit动作强化锁定效果。
1、在VBA编辑器中双击目标工作表(例如 Sheet1)。
2、粘贴以下代码:
Private Sub Worksheet_Activate()
Dim expDate As Date: expDate = #12/31/2025#
If Da 
If Not Me.ProtectContents Then Me.Protect Password:="locked", UserInterfaceOnly:=False
Application.EnableEvents = False
MsgBox "该工作表已失效,禁止编辑。", vbCritical
On Error Resume Next
Me.Cells.Locked = True
Me.EnableSelection = xlNoSelection
On Error GoTo 0
Application.EnableEvents = True
End If
三、结合单元格级时间戳与密码清除机制
该方法将失效日期写入指定单元格(如Z1),允许非开发人员后期修改截止日;同时设置“解锁入口”需输入动态口令(仅当日有效),增强可控性与审计痕迹。
1、在工作表任意空白单元格(如 Z1)中输入失效日期,格式为 2025/12/31。
2、在ThisWorkbook模块中添加如下事件:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Range("Z1").Value "" And Date > Range("Z1").Value Then
Cancel = True
MsgBox "工作表已过期,禁止保存更改。", vbStop
End If
3、在标准模块(插入 → 模块)中添加解锁函数:
Function TodayKey() As String
TodayKey = Format(Date, "yyyymmdd") & "EX"
End Function
4、用户可通过运行宏输入 =TodayKey() 获取当日唯一解锁码,用于临时解除保护(需另行编写UnlockByCode子过程)。
# word
# excel
# go
# app
# 资源管理器
# excel表格
# yy
# Boolean
# if
# select
# date
# format
# Error
# goto
# private
# #if
# function
# 事件
# 解锁
# 单元格
# 当日
# 双击
# 可通过
# 编辑器
# 如果您
# 首次
# 为您
# 已被
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
在Oracle关闭情况下如何修改spfile的参数
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
非常酷的网站设计制作软件,酷培ai教育官方网站?
简单实现Android验证码
英语简历制作免费网站推荐,如何将简历翻译成英文?
北京网站制作的公司有哪些,北京白云观官方网站?
如何在腾讯云服务器快速搭建个人网站?
Java类加载基本过程详细介绍
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Python结构化数据采集_字段抽取解析【教程】
油猴 教程,油猴搜脚本为什么会网页无法显示?
Linux安全能力提升路径_长期防护思维说明【指导】
Mybatis 中的insertOrUpdate操作
如何在IIS中新建站点并配置端口与IP地址?
node.js报错:Cannot find module 'ejs'的解决办法
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
米侠浏览器网页背景异常怎么办 米侠显示修复
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
香港服务器租用费用高吗?如何避免常见误区?
如何快速完成中国万网建站详细流程?
如何获取上海专业网站定制建站电话?
Laravel怎么在Blade中安全地输出原始HTML内容
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何在云指建站中生成FTP站点?
三星网站视频制作教程下载,三星w23网页如何全屏?
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
Laravel Seeder填充数据教程_Laravel模型工厂Factory使用
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Android中AutoCompleteTextView自动提示
Laravel如何发送系统通知?(Notification渠道示例)
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何选择PHP开源工具快速搭建网站?
中山网站推广排名,中山信息港登录入口?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何记录自定义日志?(Log频道配置)
EditPlus中的正则表达式实战(5)

