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.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…