《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實踐經驗,全部濃縮在下面的各個教程中: