前言假设一个EXCEL表中有多三个项目的记录,你需要发给三个人填写,每个人只能看到自己的部分,如何去做? 这显然是个权限分配的问题:这个也是系统中常用的功能,主要是为了防止数据误操作或泄密。 EXCEL 能不能做呢?一点问题也没有 正文如下表所示,下表中共有四个表,H001-H003为三个项目,“说明”是每个人都可以看到的,可以是填写该文件的说明性文件,另一个主要原因是因为,EXCEL不允许所有的工作表同时隐藏,必须至少有一个工作表是可见的。 思路:工作表默认除“说明”表外全部隐藏,输入不同的密码,相应表的隐藏方式为可见,为了防止打开后,通过取消隐藏查看其它项目,可以设置工作薄保护。 整个过程可以这样的描述是这个样子的: 当打开工作表时,后台先解锁工作薄保护,然后判断输入密码,确定那个工作表取消隐藏,该工作表取消隐藏后,随即进行工作薄锁定,防止通过取消隐藏,查看其他工作表 当关闭工作表时,后台先解锁工作薄保护,同时隐藏除“说明”外的所有工作表,然后进行工作薄保护。 最后通过工程属性,设定查看密码即可。 整个代码如下: Private Sub Workbook_BeforeClose(Cancel AsBoolean) ActiveWorkbook.Unprotect Password:=123 For Each ws In Worksheets If ws.Name <> "说明" Then ws.Visible = False End If Next ActiveWorkbook.Protect Password:=123 End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=123 pwd = InputBox("请输入密码") Select Case pwd Case 111 Worksheets("H001").Visible = True Case 222 Worksheets("H002").Visible = True Worksheets("H002").Activate Case 333 Worksheets("H003").Visible = True Worksheets("H003").Activate Case Else Exit Sub End Select ActiveWorkbook.Protect Password:=123 End Sub 总结VBA其实并不难!难得是思路! END |
|