我已经创建了一个包含多个宏的Excel,这个特殊的部分真的让我感到难过,因为它在24小时前完美运行并且我没有对它进行任何更改。
每当有人打开Excel时,我都会弹出一个表单(Access),他们必须输入他们的姓氏,然后输入他们名字的表格和另一张名为“统计数据”的表格。他们会看到他们。其他一切都隐藏了。现在,如果有人投入了#NO;'它是主密码'如果你愿意,几乎一切都显示出来。
如果他们没有正确地将输入资本化或拼错,它应该会发出错误信息。但是,即使输入不是错误,表单也会输出错误消息。将显示正确的工作表,但无论您输入什么,都会出现错误消息框。我知道必须有一个更好的方法,而不是错误GoTo'但我不熟练使用'尝试......'
以下是代码:
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
我没有为个人设置绝对密码&#39; Case Is =&#39;因为这适用于那些完全不知道如何对VBA进行任何更新或更改的人。所有将使用和更新的人都不知道excel中的开发人员选项卡。
以下是案例在引用Call UnHideAllSheets
时引用的代码:
Sub UnHideAllSheets()
Application.ScreenUpdating = False
Dim n As Single
For n = 1 To Sheets.Count
Sheets(n).Visible = True
Next n
Application.ScreenUpdating = True
Sheets("CleanData").Visible = False
Sheets("Template").Visible = True
Sheets("ERROR").Visible = False
Sheets("2018").Activate
End Sub
所有这些都是我从其他地方修改过的代码。就像我说的那样,它在24小时前完美运行。任何帮助非常感谢!
答案 0 :(得分:0)
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