ActiveSheet не может быть использован таким образом, насколько я знаю. По документации:
Активный лист (лист сверху); пустая ссылка (ничего в Visual Basic), если лист не активен.
Блокирует только последний выбранный вами лист. Вместо этого вам лучше иметь такой код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
Dim strPassWord As String
strPassWord = "apple"
Call LockSheet(Sheets("Sheet1"))
Call LockSheet(Sheets("Sheet2"))
Call LockSheet(Sheets("Sheet3"))
End Sub
Private Sub Workbook_Open()
Dim ws As Worksheet
Dim strPassWord As String
strPassWord = InputBox(Prompt:="Password", _
Title:="Enter Password", Default:="User Password")
If strPassWord = "apple" Then
Call UnlockSheet(Sheets("Sheet1"), strPassWord)
Call UnlockSheet(Sheets("Sheet2"), strPassWord)
Call UnlockSheet(Sheets("Sheet3"), strPassWord)
Else
MsgBox ("Password Incorrect")
End If
End Sub
Private Sub LockSheet(sheet As Worksheet)
sheet.Protect password:=strPassWord, DrawingObjects:=True, Contents:=True, Scenarios:=True
sheet.EnableSelection = xlNoSelection
End Sub
Private Sub UnlockSheet(sheet As Worksheet, strPassWord As String)
sheet.Unprotect password:=strPassWord
End Sub