Vídeo recomendado
https://youtu.be/diWPPPhW-9E

VBA – Emitindo mensagens personalizadas com MsgBox

Perguntas e Repostas sobre os artigos, posts e arquivos que são postados no site
Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

VBA – Emitindo mensagens personalizadas com MsgBox

Mensagem por webmaster »

Enviado por Guilherme:
Tomás, boa tarde.
Primeiramenta, parabéns pelo excelente trabalho!

Preciso de uma ajuda, quero que uma MsgBox seja executada quando a planilha for salva. A msgbox já esta pronta, só não sei o código que devo usar para liga-la ao “salvar” do excel.

Obrigado!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: VBA – Emitindo mensagens personalizadas com MsgBox

Mensagem por webmaster »

Guilherme,

Existe o evento BeforeSave do objeto Workbook, porém, ele é disparado antes de salvar a planilha. Ou seja, a MsgBox será mostrada, mas se houver um erro na gravação, a mensagem será inválida. Por exemplo, abra o VBA, clique duas vezes em EstaPasta_de_trabalho e cole o código abaixo:

Código: Selecionar todos

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    MsgBox "Salvou!"
End Sub
Experimente clicar em salvar. Agora, cliquem em Salvar como. Perceba que a caixa de mensagem aparece mesmo que você cancele a ação, o que pode não ser bom. Porém, há uma forma de manipular o evento para provocar o comportamento esperado. Use o código abaixo:

Código: Selecionar todos

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    Me.Save
    Application.EnableEvents = True
    MsgBox "Salvou!"
   ' cancela o Save padrão
    Cancel = True
End Sub
Veja se funciona. O problema é que nesse contexto, o Salvar como deixa de funcionar. Se não for problema, é uma opção.

Abraços


Responder