Я создал Excel с несколькими макросами, и этот конкретный раздел действительно ставит меня в тупик, потому что он отлично работал 24 часа назад, и я не вносил в него никаких изменений.
У меня есть форма (Access), который появляется каждый раз, когда кто-то открывает Excel, и он должен ввести свою фамилию, тогда лист с его именем и другой лист с именем «Stats» будут видны им.Все остальное скрыто.Теперь, если кто-то введет «NOI», это «главный пароль», если хотите, и почти все отобразится.
Если они неправильно вводят свои заглавные буквы или что-то неправильно пишут, СЛЕДУЕТ вывести сообщение об ошибке.Тем не менее, форма выводит сообщение об ошибке, даже если входные данные не являются ошибками.Будут отображаться правильные листы, но появится окно с сообщением об ошибке независимо от того, что вы ввели.Я знаю, что должен быть лучший способ, чем Error GoTo, но я не настолько опытен в использовании Try ...
Вот код:
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
Я сделалНе устанавливайте абсолютные пароли с индивидуальным «Case Is =», потому что он предназначен для людей, которые абсолютно не знают, как вносить какие-либо обновления или изменения в VBA.Все люди, которые будут использовать и обновлять это, не знают, что вкладка разработчика в Excel существует.
Вот код, к которому относится Case, когда он говорит 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 часа назад.Любая помощь высоко ценится!