Перед сохранением, напишите в окне сообщения да / нет / отмена.Да вызывает Макрос, Нет продолжает сохранять, Отмена выходит из суб - PullRequest
0 голосов
/ 18 декабря 2018

У меня уже есть успешный макрос «пользовательского сохранения» для сохранения как с отметкой даты.Я просто хочу, чтобы окно сообщения просило запустить его, когда кто-то пытается сохранить вручную.По сути, мне нужно «да» для запуска макроса, «нет» для нормального сохранения и «отмена» для выхода из подпрограммы.

Однако всякий раз, когда я сохраняю файл> сохранить или Ctrl + S, он просто сохраняет без запроса.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim answer As VbMsgBoxResult
    answer = MsgBox("Would you rather Save-As copy with date stamp?", vbYesNoCancel + vbQuestion + vbDefaultButton1, "You are overwriting the document!")

    If answer = vbYes Then
        Call filesave
    ElseIf answer = vbNo Then
        ActiveWorkbook.Save
    Else
        Exit Sub
    End If
End Sub

1 Ответ

0 голосов
/ 18 декабря 2018

Чтобы остановить текущую операцию сохранения, необходимо установить значение Отмена из аргументов подпроцедуры в True.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim answer As VbMsgBoxResult
    answer = msgbox("Would you rather Save-As copy with date stamp?", vbYesNoCancel + vbQuestion + vbDefaultButton1, "You are overwriting the document!")
    If answer = vbYes Then
        'Cancel the current standard save operation
        Cancel = True
        Call filesave
    ElseIf answer = vbNo Then
        'don't do anything; the standard save operation will proceed
    Else
        'Cancel the current standard save operation
        Cancel = True
    End If

End Sub
...