Excel 无错误时显示On Error GoTo(在选择的情况下)

Excel 无错误时显示On Error GoTo(在选择的情况下),excel,error-handling,vba,Excel,Error Handling,Vba,我用几个宏创建了一个excel,这个特殊的部分真的让我很难受,因为它在24小时前工作得很好,我没有对它做任何更改 我有一个表格(Access),每次有人打开Excel时都会弹出,他们必须输入自己的姓氏,然后他们会看到他们的姓名和另一张名为“Stats”的表格。其他一切都隐藏起来了。现在,如果有人输入'NOI',如果你愿意,它就是'master password',几乎所有内容都会显示出来 如果他们没有正确地将输入大写,或者拼错了什么,应该会弹出一条错误消息。但是,即使输入不是错误,表单也会抛出错

我用几个宏创建了一个excel,这个特殊的部分真的让我很难受,因为它在24小时前工作得很好,我没有对它做任何更改

我有一个表格(Access),每次有人打开Excel时都会弹出,他们必须输入自己的姓氏,然后他们会看到他们的姓名和另一张名为“Stats”的表格。其他一切都隐藏起来了。现在,如果有人输入'NOI',如果你愿意,它就是'master password',几乎所有内容都会显示出来

如果他们没有正确地将输入大写,或者拼错了什么,应该会弹出一条错误消息。但是,即使输入不是错误,表单也会抛出错误消息。将显示正确的工作表,但无论您输入什么,都会出现错误消息框。我知道一定有比“出错转到”更好的方法,但我不太擅长使用“尝试…”

代码如下:

Private Sub CommandButton1_Click()
    Dim pword As String
    On Error GoTo endit
          pword = TextBox1
          Select Case pword
          Case Is = "NOI": Call UnHideAllSheets
          Case Is <> "NOI": Sheets(TextBox1.Value).Visible = True
    End Select
    Sheets("ERROR").Visible = False
    Sheets("Stats").Visible = True
    Sheets(TextBox1.Value).Activate
    Me.Hide
    Exit Sub
    endit: MsgBox "Incorrect Input: check spelling and capitalization"
End Sub
所有这些都是我从其他地方修改的代码。就像我说的,它在24小时前工作得很好。非常感谢任何帮助

  • 您不需要一个
    Select
    语句来完成这个任务,一个简单的
    If…Else
    就可以了
  • 始终在预期错误的行之后停用错误处理程序。否则,以后发生的任何错误也将触发该错误处理程序,您可能会收到误导性的错误消息
  • 所以我们想出了这样的办法

    Private Sub CommandButton1_Click()
        Dim pword As String
        pword = TextBox1.Value
    
        If pword = "NOI" Then
            UnHideAllSheets
        Else
            On Error GoTo endit
            Sheets(TextBox1.Value).Visible = True
            On Error GoTo 0 'always deactivate error handler after the expected error
        End If
    
        Sheets("ERROR").Visible = False
        Sheets("Stats").Visible = True
        Sheets(TextBox1.Value).Activate
        Me.Hide
    
        Exit Sub
    endit: 
        MsgBox "Incorrect Input: check spelling and capitalization"
    End Sub
    

    pword=TextBox1->pword=TextBox1.Value(你的屏幕名对Ren来说是俄文吗?这并不重要:))工作正常谢谢@RicardoA,当我输入'NOI'时,这不起作用,因为工作表(TextBox1.Value)。Activate将尝试激活工作表(“NOI”)。Activate不存在。但是谢谢你!!
    Private Sub CommandButton1_Click()
        Dim pword As String
        pword = TextBox1.Value
    
        If pword = "NOI" Then
            UnHideAllSheets
        Else
            On Error GoTo endit
            Sheets(TextBox1.Value).Visible = True
            On Error GoTo 0 'always deactivate error handler after the expected error
        End If
    
        Sheets("ERROR").Visible = False
        Sheets("Stats").Visible = True
        Sheets(TextBox1.Value).Activate
        Me.Hide
    
        Exit Sub
    endit: 
        MsgBox "Incorrect Input: check spelling and capitalization"
    End Sub