codecamp

用VBA设置工作表使用权限的步骤

一般保护工作表采取的方法是用 EXCEL 菜单中的"保护"命令,有时候这还不够,比如一些机密文件要让某些使用者完全无法看到,但又需要他来操作工作簿中的其他表,应该怎么办呢?


此时可以打开 VBA 编辑器,打开"工程资源管理器",双击该工作表,现在出现的是设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择 worksheet ,这时再从该窗口右上方的列表框中选择Active("激活"),这时自动显示如下的语句块:


Private Sub Worksheet_Activate()


End Sub


在其中加入代码:(假设用"123"作为密码,Sheet"机密文档"为限制权限文档,sheet"普通文档"为工作簿中你认为任何适合的工作表)



If Application.InputBox("请输入操作权限密码:") = 123 Then

Range("A1").Select

Else

Msgbox "密码错误,即将退出!"

Sheets("普通文档").Select

End if



程序如下:


Private Sub Worksheet_Activate()

If Application.InputBox("请输入操作权限密码:") = 123 Then

Range("A1").Select

Else

MsgBox "密码错误,即将退出!"

Sheets("普通文档").Select

End If

End Sub


这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示密码的那段时间。



好,你可以这样做,用上述方法选择工作表的Deactivate事件,输入以下代码:

Sheets("机密文档").Cells.Font.ColorIndex = 2



这段程序使得此工作表在不被激活时,所有文字为白色。然后,在第一个程序中的Range("A1").Select后插入一行,写入以下代码:


ActiveSheet.Cells.Font.ColorIndex = 56


这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。


表格权限

完整的程序如下:

Private Sub Worksheet_Activate()

If Application.InputBox("请输入操作权限密码:") = 123 Then

Range("A1").Select

Sheets("机密文档").Cells.Font.ColorIndex = 56

Else

MsgBox "密码错误,即将退出!"

Sheets("普通文档").Select

End If

End Sub


VBA的变量含义和变量作用
教你4种方法提高Excel中VBA的效率
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }