Excel VBA: подтверждение при нажатии кнопки CommandButton
при нажатии моей командной кнопки я хотел бы иметь всплывающее окно, которое спрашивает: "эти изменения не могут быть отменены. Рекомендуется сохранить копию перед продолжением. Хотите продолжить?"
и я хочу иметь три варианта:
- да-всплывающее окно закрыто и выполняется макрос CommandButton
- нет - это закрывает всплывающее окно и ничего не меняется
- Save-закрывает всплывающее окно и открывает "Сохранить как" (макрос не казнен)
Я действительно не знаю, с чего начать. Не могли бы вы мне помочь?
большое вам спасибо.
2 ответов
вы можете использовать окно сообщения, но несколько ограничены. Вы можете немного перефразировать вопрос, чтобы использовать vbYesNoCancel
кнопки, начиная с Save As
не является дополнительной кнопкой в окне сообщения.
затем вы можете работать с результатом нажатия кнопки в окне сообщения:
Dim mbResult as Integer
mbResult = MsgBox("These changes cannot be undone. Would you like to save a copy before proceeding?", _
vbYesNoCancel)
Select Case mbResult
Case vbYes
'Modify as needed, this is a simple example with no error handling:
With ActiveWorkbook
If Not .Saved Then .SaveAs Application.GetSaveAsFilename()
End With
Case vbNo
' Do nothing and allow the macro to run
Case vbCancel
' Do NOT allow the macro to run
Exit Sub
End Select
Я предлагаю вам поместить код в верхней части макроса, чтобы задать этот вопрос и ответить на ответ.
Это будет выглядеть так:
Sub YourMacro()
if MsgBox("These changes cannot be undone. It is advised to save a copy before proceeding. Do you wish to proceed?", vbYesNo + vbQuestion) = vbNo then
exit sub
end if
... the rest of your macro.
обратите внимание, что это не даст пользователю возможность сохранения. Вы не можете сделать это со стандартным MsgBox. Если вы хотите это сделать, вам нужно будет создать свою собственную пользовательскую форму, показать, что вместо MsgBox и ответить на какую кнопку в пользовательской форме нажал пользователь. Это намного больше работы для Вас, чем просто использование MsgBox, но если вы хотите, чтобы ваш пользовательский интерфейс был причудливым, это может стоить того.