У меня есть следующие части кода для данного активного листа:VBA: Workbook.Close петля
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet
Dim myMessage
If ActiveSheet.Range("I5").Value > 0 Then
MsgBox "Some cells are empty" _
& Chr(13) & Chr(13) & "Please, fill in the empty cells to proceed", _
vbExclamation + vbOKOnly, "ERROR!"
Cancel = True
Else
ThisWorkbook.Unprotect ("123")
Worksheets("Instructions").Visible = True
Worksheets("Instructions").Activate
For Each sh In Worksheets
If sh.Name <> "Instructions" Then
sh.Visible = xlVeryHidden
End If
Next sh
ThisWorkbook.Protect ("123")
myMessage = MsgBox("Do you want to save and close this file?", vbQuestion + vbYesNo, "Workbook 1")
If myMessage = vbYes Then
Application.DisplayFormulaBar = True
ThisWorkbook.Close True
ElseIf myMessage = vbNo Then
Cancel = True
Else
'nothing
End If
End If
End Sub
В общем, при нажатии на кнопку закрытия на самой книге, идея заключается в том, чтобы проверить данное ячейки данного активного листа для ненулевого значения. Если он не равен нулю, пользователь должен сначала заполнить некоторые пустые ячейки, а книга не будет закрыта. В качестве альтернативы рабочий лист «Инструкция» активируется, и пользователь получает окно с сообщением о том, что делать дальше (делая это вместо простого msgbox и придерживаясь обычной подсказки «SAVE/NO», заключается в том, что я хочу устранить возможность нажатия пользователем кнопки «Нет», что приведет к невозможности сохранения). Единственная проблема, с которой я столкнулся, - это однократный цикл, который я получаю, когда пользователь выбирает ответ «Да»: снова появляется такое же окно сообщения (видимо, потому что процедура снова проходит через строку кода!). Буду признателен, если бы вы могли предложить мне, как я мог бы избежать этого цикла.
Зачем вам нужно повторить функцию, уже внедренную в Excel: это всплывающее диалоговое окно подсказки на рабочем столе закрыть «Вы хотите сохранить изменения ...» с 3 стандартными кнопками? С уважением, –
@AlexBell, спасибо за ваш комментарий. Как я уже упоминал в разделе вопросов, я хочу, чтобы пользователь случайно не нажал кнопку «Нет», что не приведет к тому, что ничего не будет сделано. Это единственная причина, по которой я реализовал свой собственный ящик сообщений. –