当前位置: 首页 > ds >正文

VBA代码解决方案第二十七讲:禁用EXCEL工作簿右上角的关闭按钮

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程,目前已经是第三版修订了。这套教程定位于入门后的提高,在学习这套教程过程中,侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码摆好。

这套教程共三册,一百四十七讲,内容覆盖较广,也是初级和中级间的过渡教程,改版后的内容主要是提供程序源码文件及代码修正为32位和64位兼用代码。今后一段时间会给大家陆续推出。今日的内容是VBA代码解决方案第二十七讲:禁用EXCEL工作簿右上角的关闭按钮

【分享成果,随喜正能量】219 你看,匆匆一年又是秋;岁月不堪重负,故人不如初。不过是在这人间暂坐,却要经历万千沧桑。。

第二十七讲 禁用EXCEL工作簿右上角的关闭按钮

在EXCEL操作中当我们需要关闭一个文件时,最经常使用的方法是单击文件右上角的“X”,这时就会关闭文件了,如果玩VBA熟练了,往往要出点花样,这里给大家介绍一点,就是禁用文件右上角的“X”,让人无法利用此功能关闭文件。

1 禁用工作簿关闭按钮的代码

好了,我们先看下面的代码:

Private BClose As Boolean

Private Sub Workbook_BeforeClose(Cancel As Boolean) '第21讲 如何做到如果禁用VBA将无法继续工作

If BClose = False Then

Cancel = True

MsgBox "此功能已经被禁止,文件无法关闭!", vbExclamation, "提示"

End

End If

End Sub

Sub mynz_27() '27禁用EXCEL工作簿右上角的关闭按钮,测试时要将前面的半角引号去掉

BClose = True

MsgBox "可以关闭了。"

End Sub

代码截图:

2 禁用关闭按钮代码的解读及运行效果

代码解析:

1) 第1行代码在模块顶部声明变量BClose为Boolean类型,默认初始值为False。

2) 第2行到第8行代码工作簿的BeforeClose事件过程,通过变量BClose的当前值决定是否能够关闭工作簿,只有当BClose的值为True时,才允许关闭工作簿。如果变量BClose的值为False时将参数Cancel的值设置为True,以禁止关闭操作。

3) 第9行到第12行代码是mynz_27过程,将变量BClose的当前值设置为True后使用Close方法关闭工作簿。

我们看看程序的运行截图,首先,我们单击关闭“X”的按钮,看看结果是怎么样的,在下面的截图中显示了“此功能已经被禁止,文件无法关闭!”,这就明这个功能是无法利用的,点击这个 关闭“X”的按钮,文件时无法关闭的。

那么我们将如何关闭这个工作薄呢?不能让别人无法关闭,自己也无法关闭啊,这时就要利用上述的mynz_27过程了。

我们再回顾一下这个过程:

Sub mynz_27() '27禁用EXCEL工作簿右上角的关闭按钮,测试时要将前面的半角引号去掉

BClose = True

MsgBox "可以关闭了。"

End Sub

非常的简单,起到什么作用呢?我们先试一试,建立一个按钮关联mynz过程,点击一下,会告诉我们“可以关闭了”,虽然菜单没有任何的变化,但这时我们再点击关闭“X”的按钮,可以关闭了。

就这么简单呢.原来在执行上述的mynz_27过程后,BClose = True,就可以关闭文件了,如果我们把上述的关联按钮设置的隐秘一些,是不是就可以自己才能够关闭文件了?这就是玩的花活了。

今日内容回向:

1 禁用关闭按钮的思路是什么?

2 启用关闭按钮如何做到的?

本讲内容参考程序文件:VBA代码解决方案(27).xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



http://www.xdnf.cn/news/16856.html

相关文章:

  • ubuntu22.04系统入门 linux入门 简单命令基础复习 实现以及实践
  • 经典屏保问题 - 华为OD机试真题(Java 题解)
  • pytorch程序语句固定开销分析
  • dubbo源码之消费端启动的高性能优化方案
  • 28. 找出字符串中第一个匹配项的下标
  • C++-2025.7.31
  • 1️⃣4️⃣ OOP:类、封装、继承、多态
  • H.266 vs H.265/AV1/H.264:从工程落地看下一代视频系统的技术演进
  • 第三十一篇 AI的“能力考”:模型评估、保存与加载的艺术【总结前面3】
  • MBR与GPT分区表深度解析:硬盘分区该怎么选?
  • pip库版本升级
  • Android Studio 中Revert Commit、Undo Commit 和 Drop Commit 使用场景
  • Android Studio怎么显示多排table,打开文件多行显示文件名
  • 现在有哪些广泛使用的时序数据库?
  • [免费]基于Python的招聘职位信息推荐系统(猎聘网数据分析与可视化)(Django+requests库)【论文+源码+SQL脚本】
  • [mind-elixir]Mind-Elixir 的交互增强:单击、双击与鼠标 Hover 功能实现
  • Web3.0 和 Web2.0 生态系统比较分析:差异在哪里?
  • 【Datawhale AI夏令营】科大讯飞AI大赛(大模型技术)/夏令营:让AI理解列车排期表(Task3)
  • 【python 获取邮箱验证码】模拟登录并获取163邮箱验证码,仅供学习!仅供测试!仅供交流!
  • uni-app webview的message监听不生效(uni.postmessage is not a function)
  • linux 执行sh脚本,提示$‘\r‘: command not found
  • 从一开始的网络攻防(十四):WAF绕过
  • day21-Excel文件解析
  • 【MySQL 数据库】MySQL索引特性(一)磁盘存储定位扇区InnoDB页
  • AI 代码助手在大前端项目中的协作开发模式探索
  • C++ Qt网络编程实战:跨平台TCP调试工具开发
  • 容器与虚拟机的本质差异:从资源隔离到网络存储机制
  • 2020 年 NOI 最后一题题解
  • Apple基础(Xcode②-Flutter结构解析)
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-49,(知识点:OSI模型,物理层、数据链路层、网络层)