我在Excel中使用了“保护工作表”选项,但此外,我还要求用户在点击每张纸时输入密码。每张纸都有一个特定的密码。如果您不知道密码,我不希望用户能够修改工作表上的任何内容。他们可以打印,但不能修改任何东西。我每张都有一个密码,但我使用的代码不起作用......也许它太基本了......有人可以帮忙吗?
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Msg As String
Dim UserEntry As Variant
Msg = InputBox("What is the password?")
Do
Sheet1.Activate
UserEntry = InputBox(Msg)
If UserEntry = "test" Then Exit Sub
If UserEntry = False Then
Msg = "Invalid Password!"
Msg = Msg & vbNewLine
Msg = Msg & "What is the password?"
Loop
Sheet1.Activate = UserEntry
End Sub
答案 0 :(得分:2)
虽然它可能取决于您的Excel版本(我在2007年测试过),但只需右键单击该标签并选择“保护表”。您可以单独为每个工作表设置密码。
用户只需转到功能区中的“审核”选项卡,然后选择“取消保护表”并输入密码。
你真的想避免通过VBA设置密码,因为很容易进入代码找到密码。
答案 1 :(得分:0)
在ThisWorkbook模块中试试
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error GoTo WrongPassword
Sh.Unprotect
CleanUp:
Exit Sub
WrongPassword:
MsgBox "Wrong Password"
End Sub
答案 2 :(得分:0)
以下是基础知识,您可以添加对无效密码的检查。
Private Sub Worksheet_Activate()
Dim Msg As String
Dim UserEntry As String
Msg = InputBox("What is the password?")
If Msg = "test" Then
ActiveSheet.Unprotect ("password")
End If
End Sub