《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.pswp.cn/pingmian/91751.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91751.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/91751.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring AI 系列之三十一 - Spring AI Alibaba-基于Nacos的MCP

之前做个几个大模型的应用,都是使用Python语言,后来有一个项目使用了Java,并使用了Spring AI框架。随着Spring AI不断地完善,最近它发布了1.0正式版,意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

sqli-labs:Less-12关卡详细解析

1. 思路🚀 本关的SQL语句为: $uname".$uname."; $passwd".$passwd."; $sql"SELECT username, password FROM users WHERE username($uname) and password($passwd) LIMIT 0,1";注入类型:字符串型&#xff0…

【SpringAI】8.通过json动态添加mcp服务

前言 官方示例的代码中,mcp一般是配置到yml中或者json文件中,使用自动装配的方式注入服务,这种方式不方便在程序启动后添加新的服务,这里参考cherry studio的方式动态添加mcp服务 1.确定方案 mcp服务的维护放到mysql业务数据库维…

【PDF + ZIP 合并器:把ZIP文件打包至PDF文件中】

B站链接 PDF ZIP 合并器:把ZIP文件打包至PDF文件中_哔哩哔哩_bilibiliz 加强作者的工具 https://wwgw.lanzn.com/i8h1C32k9bef 密码:30cv 新增c框架,加快运行速度

阿里云部署微调chatglm3

git Ifs install Git lfs 主要用于管理大型文件。在传统的Git仓库中,所有文件内容都会被完整记录在每一次提交中,这会导致仓库体积增大,克隆、拉取和推送操作变慢,甚至可能超出存储限额。Git LFS通过将大文件替换成文本指针&#…

Linux网络编程 ---五种IO模型

五种IO模型一、IO慢的原因二、五种IO模型三、如何设置非阻塞式IO?一、IO慢的原因 二、五种IO模型 阻塞式IO 非阻塞式IO 信号驱动IO 多路转接 异步IO 三、如何设置非阻塞式IO? (一)用法说明 (二&#xff0…

Obsidian结合CI/CD实现自动发布

CI/CDQuickAddJS脚本bat脚本sh脚本实现自动发版Hugo文章 需求来源 每次手动执行Hugo的命令,手动把public文件夹上传到自己的服务器可以完成发版需求。 但是,作为一个内容创作者,我更希望的关注于自己的内容,而不是关注整个发版…

[硬件电路-141]:模拟电路 - 源电路,信号源与电源,能自己产生确定性波形的电路。

源电路(Source Circuit)是电子系统中为其他电路或负载提供特定信号或能量的基础电路模块,其核心功能是生成、调节或转换所需的物理量(如电压、电流、波形、频率等)。以下是源电路的详细解析:一、源电路的核…

Unity_数据持久化_PlayerPrefs基础

Unity数据持久化 一、数据持久化基础概念 1.1 什么是数据持久化 定义: 数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。 通俗解释: 将游戏数据存储到硬盘,硬盘中数据读取到游戏中&…

什么是列存储(Columnar Storage)?深度解析其原理与应用场景

列存储的基本概念:颠覆传统的数据组织方式列存储(Column Storage)是一种革命性的数据库存储技术,它通过按列而非按行组织数据,从根本上改变了数据的物理存储结构。与传统行存储数据库不同,列式数据库将每一…

机器人抓取流程介绍与实现——机器人抓取系统基础系列(七)

机器人抓取系统基础系列文章目录 1. UR机械臂的ROS驱动安装官方教程详解——机器人抓取系统基础系列(一) 2. MoveIt控制机械臂的运动实现——机器人抓取系统基础系列(二) 3. 机器人(机械臂)的相机选型与安装…

【Qt】QObject::startTimer: Timers cannot be started from another thread

QTimer对象的 start 函数调用必须和创建QTimer对象是同一个线程。 #include "QtTimerTest.h" #include <QDebug>QtTimerTest::QtTimerTest(QWidget *parent): QMainWindow(parent),m_timer(nullptr),m_timerThread(nullptr), m_workingThread(nullptr) {ui.set…

社会治安满意度调查:为城市安全治理提供精准参考(满意度调查公司)

在社会治理不断深化的背景下&#xff0c;公众对社会治安的感知与评价已成为衡量城市治理水平的重要维度&#xff08;社会治安满意度调查&#xff09;&#xff08;公众满意度调查&#xff09;&#xff08;满意度调查&#xff09;。为全面掌握市民对治安状况的真实反馈&#xff0…

Python篇--- Python 的加载、缓存、覆盖机制

要理解 import 与 if __name__ "__main__": 的关系&#xff0c;以及 Python 的加载、缓存、覆盖机制&#xff0c;我们可以从 “模块的两种身份” 和 “导入的全过程” 入手&#xff0c;用通俗的例子一步步拆解。一、核心&#xff1a;模块的 “双重身份” 与 __name_…

Java设计模式之行为型模式(访问者模式)应用场景分析

访问者模式&#xff08;Visitor Pattern&#xff09;作为Java设计模式中的“隐形冠军”&#xff0c;常被开发者低估其价值。这一模式通过“双分派”机制巧妙解耦数据结构与操作&#xff0c;为复杂系统的扩展提供了强大武器。在大厂项目中&#xff0c;访问者模式往往出现在业务逻…

【IDEA】JavaWeb自定义servlet模板

方法一&#xff1a;&#xff08;推荐去使用方法二&#xff0c;还能创建其它代码模板&#xff09;使用servlet模板创建Servlet类如果创建时找不到servlet模板&#xff1a;File -> Project Structure然后应用 -> OK&#xff0c;如果还是找不到Servlet模板&#xff0c;看看项…

Linux选择

在内存中运行着的进程称为&#xff08; 服务 &#xff09;。负责控制systemd系统和服务管理器的工具为&#xff08; systemctl &#xff09;命令。systemd管理系统服务的基本单位是&#xff08; unit &#xff09;。分配和管理资源的基本单位是&#xff08; 进程 &#xf…

【Redis学习路|第一篇】初步认识Redis

概要: 深入探讨NoSQL数据库的核心特性&#xff0c;对比传统关系型数据库的差异&#xff0c;重点介绍Redis作为内存数据库的优势与应用场景。 文章目录认识 NoSQLNoSQL vs SQL 对比1️⃣ 结构化 vs 非结构化2️⃣ 关联 vs 非关联3️⃣ 查询方式对比4️⃣ 事务特性5️⃣ 存储方式…

java局域网聊天室小项目架构思路

java局域网聊天室小项目架构思路 项目需求 创建一个局域网聊天系统&#xff0c;要求&#xff1a;用户在登录界面登录后进入聊天窗口界面&#xff0c;能实现多用户同时在线聊天&#xff0c;并且用户之间可以进行私聊 项目用到的技术栈 java网络编程java多线程java面向对象编…

vulhub-corrosion2靶机

1.安装靶机 https://download.vulnhub.com/corrosion/Corrosion2.ovahttps://download.vulnhub.com/corrosion/Corrosion2.ova 2.扫描IP 3.扫描端口 4.访问端口 首先访问一下80端口 访问一个8080端口发现是一个apache的页面 5.扫描目录与漏洞探测 那么我们扫描一下目录 80…