【问题标题】:i have 5 worksheets in my excel workbook but i want to specifically protect 3rd and 5th worksheets with password我的 excel 工作簿中有 5 个工作表,但我想用密码专门保护第 3 和第 5 个工作表
【发布时间】:2017-07-06 11:35:22
【问题描述】:

我的 Excel 工作簿中有 5 个工作表,但我想用密码专门保护第 3 个和第 5 个工作表。具有以下仅保护一张纸的宏。需要添加什么来保护不止一张纸但不是所有纸。请指导我。

提前致谢!!

      Private Sub Workbook_SheetActivate(ByVal Sh As Object)
      Dim MySheets As String, Response As String
      MySheet = "Sheet1"
      If ActiveSheet.Name = MySheet Then
      ActiveSheet.Visible = False
            Response = InputBox("Enter password to view sheet")
             If Response = "pass" Then
             Sheets(MySheet).Visible = True
             Application.EnableEvents = False
             Sheets(MySheet).Select
              Application.EnableEvents = True
              End If
       End If
       Sheets(MySheet).Visible = True
 End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    试试这个:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim MySheets As String, Response As String
    MySheet = ActiveSheet.Name
    Select Case MySheet
    Case "Sheet1", "Sheet3", "Sheet5"
    ActiveSheet.Visible = False
         Response = InputBox("Enter password to view sheet")
          If Response = "pass" Then
            Sheets(MySheet).Visible = True
            Application.EnableEvents = False
            Sheets(MySheet).Select
            Application.EnableEvents = True
          End If
    End Select
    Sheets(MySheet).Visible = True
    End Sub
    

    但是硬编码密码并不能保证安全。

    【讨论】:

    • 感谢您的及时回复。它工作正常。再次非常感谢
    • @UGP.one 更多关注。在输入密码时,它反映了实际字符,而不是需要显示“*”。请在这方面帮助我。
    • 您无法在InputBox 中实现此目的,您必须为此创建一个Userform。如果您随后使用Textbox,您可以设置密码字符。
    • 我会这样做的。谢谢@UGP
    • @UGP。我的工作簿中有“n”个工作表。我想用密码保护工作表,直到第 (n-1) 个工作表。是否有任何快捷方式可以在 vba 程序中使用,而不是一一提及所有工作表名称。提前致谢!
    猜你喜欢
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 2020-07-17
    • 2019-12-05
    • 2019-05-27
    • 2017-10-18
    相关资源
    最近更新 更多