VBA InputBox запрашивает дважды

У меня есть простой скрипт для запроса пароля перед закрытием книги (чтобы предотвратить случайное закрытие), но InputBox открывается снова, если я ввожу правильное ключевое слово. Я создал несколько итераций приведенного ниже сценария, но не могу его решить.

Sub Workbook_BeforeClose(Cancel As Boolean)

If InputBox("Please enter the password to close the workbook.") <> "pa55word" Then
    MsgBox ("Incorrect password.  Please try again")
    Cancel = True
    Exit Sub
Else
    GoTo GoToClose
End If

GoToClose:
ThisWorkbook.Close SaveChanges:=False

End Sub

2 ответа

Решение

Если вы кодируете это так:

  • код просто переходит к сохранению книги, если пароль введен правильно без второго закрытия
  • ThisWorkbook.Saved спереди сообщает Excel, что рабочая книга полностью обновлена, поэтому вы не хотите сохранять сообщение, т. е. выполняет ту же задачу, что и False часть ThisWorkbook.Close SaveChanges:=False и существующее событие Save закрывает книгу.

перекроить

Sub Workbook_BeforeClose(Cancel As Boolean)

ThisWorkbook.Saved = True
If InputBox("Please enter the password to close the workbook.") <> "pa55word" Then
     MsgBox ("Incorrect password.  Please try again")
     Cancel = True
End If

End Sub

Отключить события до закрытия.

Другие вопросы по тегам