Ir ao conteúdo
  • Cadastre-se
Jonatas_Cl

Utilizar dois comandos de BeforeSave e BeforeClose

Recommended Posts

Prezados, boa noite.

 

Eu consigo utilizar dois comandos na mesma pasta de trabalho? Por exemplo, preciso colocar um beforesave e beforeclose na Plan1 e colocar outro beforesave e beforeclose na Plan2. Porém, ao colocar aparece que está duplicado e não deixa.

 

Tem algum espaço que eu troque o nome ou que então eu consiga fazer para colocar?

 

Private Sub Workbook_BeforeClose(Cancel As Boolean)

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Por exemplo, preciso colocar um beforesave e beforeclose na Plan1 e colocar outro beforesave e beforeclose na Plan2.

 

 

Olá, Jonatas.

Workbook_BeforeClose e Workbook_BeforeSave são eventos de Pasta de Trabalho (ou Arquivo) e não de planilha, por isso, ambos devem ser colocados no módulo de "EstaPasta_de_trabalho".

Os dois podem ser instalados em uma mesma Pasta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Jonatas.

Workbook_BeforeClose e Workbook_BeforeSave são eventos de Pasta de Trabalho (ou Arquivo) e não de planilha, por isso, ambos devem ser colocados no módulo de "EstaPasta_de_trabalho".

Os dois podem ser instalados em uma mesma Pasta.

l

Obrigado pela resposta, mas minha duvida é,

Eu preciso colocar beforesave1: se tal coluna não tiver preenchida, volte e preencha.

E além desse eu preciso colocar beforesave2: se tal linha não estiver preenchida, volte e preencha.

E no beforeclose a mesma coisa, preciso ter dois beforesave e dois beforeclose. Não sei se é possível, pois aparece comando duplicado quando tento. E não sei se dá para colocar mais funções dentro de apenas um comando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

..., preciso ter dois beforesave e dois beforeclose. Não sei se é possível, pois aparece comando duplicado quando tento. E não sei se dá para colocar mais funções dentro de apenas um comando.

 

Esses eventos devem ser únicos em uma "Pasta de Trabalho". Não é possível ter mais de um.

O código disparado por esses eventos pode ter quantas condições forem necessárias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esses eventos devem ser únicos em uma "Pasta de Trabalho". Não é possível ter mais de um.

O código disparado por esses eventos pode ter quantas condições forem necessárias.

 

Entendi! Coloquei mais de uma condição e deu certo, obrigado!

 

Me da uma ajuda nesse código por favor:

 

Private Sub Workbook_BeforeClose(Cancel As Boolean)With Sheets("MARÇO")        If .[E36] <> [F36] Then            MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."                Sheets("MARÇO").Activate        Cancel = True        End If    End With        With Sheets("Consolidado")        If .[M28] <> [M29] Then            MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."                Sheets("Consolidado").Activate        Cancel = True        End If    End WithEnd Sub

Se a condição da planilha "Consolidado" estiver de acordo com o código, clico em fechar ele aparece a mensagem normalmente, mas se eu clico na planilha "Março" ele deixa salvar corretamente. 

 

Tem alguma correção? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da forma que está escrito, o comando abaixo compara o conteúdo da célula "E36" da planilha "MARÇO" com o conteúdo da célula "F36" da planilha ativa. Se você quer comparar com "F36" da planilha "MARÇO" então é preciso colocar o ponto (em vermelho) >> .[F36]


With Sheets("MARÇO")
        If .[E36] <> [F36] Then

 

 

Idem para o comando referente à planilha "Consolidado".

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz a alteração e ficou como queria, mas queria incrementar um pouco mais, é possível?

 

Por exemplo,

traduzindo o código

 

Na planilha "Março", se E36 estiver diferente de F36, em seguida apareça a mensagem. Até aí tudo certo, porém queria adicionar para fazer com que o código fique assim:

 

Se na planilha "Março" E36 estiver diferente de F36, apareça a mensagem, se não tiver diferente, na planilha "Consolidado", se M28 for diferente de M29 apareça a mensagem.

 

Tipo um procedimento, se a planilha "Março" estiver ok, ele vai verificar na planilha "Consolidado" se está, aí sim irá autorizar o salvamento ou não. 

 

Obrigado.

 Private Sub Workbook_BeforeClose(Cancel As Boolean)With Sheets("MARÇO")        If .[E36] <> [F36] Then            MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."                Sheets("MARÇO").Activate        Cancel = True        End If    End With        With Sheets("Consolidado")        If .[M28] <> [M29] Then            MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."                Sheets("Consolidado").Activate        Cancel = True        End If    End WithEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se é isso:

Private Sub Workbook_BeforeClose(Cancel As Boolean) If Sheets("MARÇO").[E36] <> Sheets("MARÇO").[F36] Or _   Sheets("Consolidado").[M28] <> Sheets("Consolidado").[M29] Then   MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."   Cancel = True End IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo também!! 

 

Mas o ideal seria aparecer qual planilha está pendente.

 

Não dá para colocar o Sheets ("Planilha") .Activate nesse caso né?

Compartilhar este post


Link para o post
Compartilhar em outros sites


Private Sub Workbook_BeforeClose(Cancel As Boolean)

 If Sheets("MARÇO").[E36] <> Sheets("MARÇO").[F36] Then

  MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."

  Sheets("MARÇO").Activate: Cancel = True

 ElseIf Sheets("Consolidado").[M28] <> Sheets("Consolidado").[M29] Then

  MsgBox "Flávia, volte e preencha todas as informações necessárias! Contamos com sua colaboração."

  Sheets("Consolidado").Activate: Cancel = True

 End If

End Sub

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×