前景提要
关于工作簿的保护,小伙伴们日常的需求还是很大的,最近也是有一些小伙伴们提供了一些日常工作中的场景
说到底,还是针对自己的工作薄模板的保护,因为很多时候,我们都是将自己的数据写好,套用公式,然后形成各种数据表的样式,但是当你将这些数据分发给其他同事,尤其是分发给其他同事填写数据的时候,往往会出现很多让你生气的事情
比方说随意的篡改单元格数据
随意的新增工作表,或者更改工作表的名称,让你原来的公式和数据全部乱套了,欲哭无泪
那么今天呢
我们就针对这两个问题来说下如何限制的
场景说明
这是我们今天的工作簿,现在工作簿中有且仅有一个工作表,并且已经设置了工作表的名称,我们来实现上面两个效果
1.禁止新增工作表
2.禁止更改当前工作表名称
代码区
Private Sub Workbook_NewSheet(ByVal Sh As Object)Application.DisplayAlerts=FalseActiveSheet.Delete Application.DisplayAlerts=trueEnd Sub
直接来看看效果
效果非常的直接,不管你尝试努力去创建新工作表多少次,最终的结果都是。。。没有任何效果。为什么呢?
ActiveSheet.Delete
你一创建,就被删除了,根本没有看见的机会
好,继续下一个效果,禁止修改工作表的
Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Me.Name "我就是我,不许改名字" Then Me.Name = "我就是我,不许改名字"End If
End Sub
代码解析
代码都实现了我们的效果,其实这两个代码,大家都应该猜到了,是属于工作表的事件功能
所以他们的代码应该写在哪里,就非常的重要了。
禁止新增工作表,应该是工作簿的事件功能,那么自然而然应该写在
而第二个,明显就是工作表的事件,这里大家可能并不好理解,为什么是选择出现了变化呢?
因为excel的工作表事件中,并没有修改名称的,所以这里我们要取一个巧
当工作表的选择发生变化的时候,我们去判断,这个工作表的名称是否是我们预设的,如果不是,则直接强制改回来
因为你更改了工作表名称之后,你肯定要操作的,所以就是这样一个逆向的思维
所以代码要写在对应的工作表里面。
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有