Используйте 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