禁止添加新的工作表 禁止修改工作表名稱點(diǎn)擊上方“Excel和VBA”,選擇“置頂公眾號(hào)” 致力于原創(chuàng)分享Excel的相關(guān)知識(shí),源碼,源文件打包提供 一起學(xué)習(xí),一起進(jìn)步~~ 關(guān)于工作簿的保護(hù),小伙伴們?nèi)粘5男枨筮€是很大的,最近也是有一些小伙伴們提供了一些日常工作中的場(chǎng)景 說到底,還是針對(duì)自己的工作薄模板的保護(hù),因?yàn)楹芏鄷r(shí)候,我們都是將自己的數(shù)據(jù)寫好,套用公式,然后形成各種數(shù)據(jù)表的樣式,但是當(dāng)你將這些數(shù)據(jù)分發(fā)給其他同事,尤其是分發(fā)給其他同事填寫數(shù)據(jù)的時(shí)候,往往會(huì)出現(xiàn)很多讓你生氣的事情 比方說隨意的篡改單元格數(shù)據(jù) 隨意的新增工作表,或者更改工作表的名稱,讓你原來(lái)的公式和數(shù)據(jù)全部亂套了,欲哭無(wú)淚 那么今天呢 我們就針對(duì)這兩個(gè)問題來(lái)說下如何限制的 場(chǎng)景說明這是我們今天的工作簿,現(xiàn)在工作簿中有且僅有一個(gè)工作表,并且已經(jīng)設(shè)置了工作表的名稱,我們來(lái)實(shí)現(xiàn)上面兩個(gè)效果 1.禁止新增工作表 2.禁止更改當(dāng)前工作表名稱 代碼區(qū)Private Sub Workbook_NewSheet(ByVal Sh As Object) Application.DisplayAlerts=False ActiveSheet.Delete Application.DisplayAlerts=true End Sub 直接來(lái)看看效果 效果非常的直接,不管你嘗試努力去創(chuàng)建新工作表多少次,最終的結(jié)果都是。。。沒有任何效果。為什么呢? ActiveSheet.Delete 你一創(chuàng)建,就被刪除了,根本沒有看見的機(jī)會(huì) 好,繼續(xù)下一個(gè)效果,禁止修改工作表的 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Me.Name <> "我就是我,不許改名字" Then Me.Name = "我就是我,不許改名字" End If End Sub 代碼分析代碼都實(shí)現(xiàn)了我們的效果,其實(shí)這兩個(gè)代碼,大家都應(yīng)該猜到了,是屬于工作表的事件功能 所以他們的代碼應(yīng)該寫在哪里,就非常的重要了。 禁止新增工作表,應(yīng)該是工作簿的事件功能,那么自然而然應(yīng)該寫在 而第二個(gè),明顯就是工作表的事件,這里大家可能并不好理解,為什么是選擇出現(xiàn)了變化呢? 因?yàn)閑xcel的工作表事件中,并沒有修改名稱的 ,所以這里我們要取一個(gè)巧 當(dāng)工作表的選擇發(fā)生變化的時(shí)候,我們?nèi)ヅ袛?,這個(gè)工作表的名稱是否是我們預(yù)設(shè)的,如果不是,則直接強(qiáng)制改回來(lái) 因?yàn)槟愀牧斯ぷ鞅砻Q之后,你肯定要操作的,所以就是這樣一個(gè)逆向的思維 所以代碼要寫在對(duì)應(yīng)的工作表里面。 好了,明晚21:00,準(zhǔn)時(shí)再見! 因?yàn)楣娞?hào)沒有留言功能(開的比較晚),所以建立一個(gè)線下微信群,主要為大家提供一個(gè)交流的平臺(tái),同時(shí)大家也可以提一些對(duì)公眾號(hào)的意見和看法,大家一起學(xué)習(xí),一起進(jìn)步。 |
|