excel-vba为每个页面选项卡设置传递

时间:2018-05-30 11:35:19

标签: excel excel-vba vba

我试图在书的每个页面添加一个密码,所以当我点击一个页面标签时,我会得到一个输入框,询问它的通过。每个页面都有唯一的密码。我该怎么做?我尝试在vba ThisWorkbook上编写这段代码,但它没有做任何事情:

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

提前致谢!

1 个答案:

答案 0 :(得分:1)

使用Option Explicit。然后您会注意到,inicio是变量,而不是名称。通常,如果您编写"inicio",则代码应该有效。

或类似的东西,如果你忽略inicio并使用你已声明的MySheet字符串变量:

Option Explicit

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim MySheet As String, Response As String
    MySheet = "Sheet1"

    If ActiveSheet.Name = MySheet Then
        ActiveSheet.Visible = False
        Response = InputBox("Enter password to view sheet")
        If Response = "abc" Then
            Sheets(MySheet).Visible = True
            Application.EnableEvents = False
            Sheets(MySheet).Select
            Application.EnableEvents = True
        End If
    End If

End Sub

或者这样,如果您想要使用Sh参数而不是ActiveSheet来做得更小一点:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

    Dim mySheet As String: mySheet = "Sheet1"
    Dim response As String

    If Sh.Name = mySheet Then
        response = InputBox("Enter password to view sheet")
        Sh.Visible = CBool(response = "abc")
    End If

End Sub
相关问题