Ir ao conteúdo
  • Cadastre-se

Macro só salvar através de uma condicional


Posts recomendados

Segue exemplo:

 

	Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Tenho uma planilha excel e só quero que o arquivo seja salvo se a célula Q1 seja igual a 300%,
'caso negativo aparecerá uma msgbox com o texto "Arquivo preenchido incorretamente, não foi possível salvar".
	    If Sheets(" * AQUI O NOME DA SUA ABA").Range("Q1").Text <> "300%" Then
        MsgBox "Arquivo preenchido incorretamente, não foi possível salvar", vbCritical, "Aviso"
        Cancel = True
    End If
	End Sub
	

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Olá amigo, aparece o erro "erro de compilação" era esperado End sub.

 

Segue código:

 

Sub Macro6()
'
' Macro6 Macro
'

'
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Tenho uma planilha excel e só quero que o arquivo seja salvo se a célula Q1 seja igual a 300%,
'caso negativo aparecerá uma msgbox com o texto "Arquivo preenchido incorretamente, não foi possível salvar".
        If Sheets("Ativos").Range("Q1").Text <> "300%" Then
        MsgBox "Arquivo preenchido incorretamente, não foi possível salvar", vbCritical, "Aviso"
        Cancel = True
    End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

Siga este procedimento: 

Aperte as teclas ALT+F11, ao lado esquerdo  (vide img) click duas vezes em EstaPasta_de_trabalho e no editor a direita cole o codigo que postei anteriormente: 

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Tenho uma planilha excel e só quero que o arquivo seja salvo se a célula Q1 seja igual a 300%,
'caso negativo aparecerá uma msgbox com o texto "Arquivo preenchido incorretamente, não foi possível salvar".
	    If Sheets(" * AQUI O NOME DA SUA ABA").Range("Q1").Text <> "300%" Then
        MsgBox "Arquivo preenchido incorretamente, não foi possível salvar", vbCritical, "Aviso"
        Cancel = True
    End If
	End Sub

Em seguida salve a planilha com a extensão xlsm (macros)

 

auto_ca2.gif

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Sendo assim, substitua a macro anterior... por esta: 

 

Const NomeDaSuaAba = "* ALTERE AQUI e coloque o nome da sua ABA (entre aspas)"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If Sheets(NomeDaSuaAba).Range("Q1").Text <> "300%" Then
        MsgBox "Arquivo preenchido incorretamente, não foi possível salvar e será fechado!", vbCritical, "Aviso"
        Cancel = True
        ThisWorkbook.Application.DisplayAlerts = False
        ThisWorkbook.Application.Quit
    End If
    End Sub

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Excelente, funcionou!

 

Seria possível aparecer esta msg box 'Arquivo preenchido incorretamente, salvar mesmo assim?' com as opções "Sim" e "Não"?

Se sim, Salvar e fechar a planilha. Se não, não salvar mas manter a planilha aberta.

 

Não utilizaríamos mais a msg box anterior.

 

Obrigado pela ajuda amigo!

Link para o comentário
Compartilhar em outros sites

Tarde, segue abaixo as alterações: 

 

Const NomeDaSuaAba = "* ALTERE AQUI e coloque o nome da sua ABA (entre aspas)"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If Sheets(NomeDaSuaAba).Range("Q1").Text <> "300%" Then
      If MsgBox("Arquivo preenchido incorretamente, salvar mesmo assim? ", vbCritical + vbYesNo, "Aviso") = vbYes Then
        Cancel = False
        Exit Sub
        Else
        Cancel = True
        ThisWorkbook.Application.DisplayAlerts = False
        ThisWorkbook.Application.Quit
    End If
    End Sub
End Sub

 

Link para o comentário
Compartilhar em outros sites

Bom seria a mesma condiçao? 

Se sim, segua as alterações: 

Const NomeDaSuaAba = "* ALTERE AQUI e coloque o nome da sua ABA (entre aspas)"
Const NomeDaSuaOutraAba = "* ALTERE AQUI e coloque o nome da sua OUTRA ABA (entre aspas)"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
        If Sheets(NomeDaSuaAba).Range("Q1").Text <> "300%" Or _
         Sheets(NomeDaSuaOutraAba).Range("Q1").Text <> "300%" Then
      If MsgBox("Arquivo preenchido incorretamente, salvar mesmo assim? ", vbCritical + vbYesNo, "Aviso") = vbYes Then
        Cancel = False
        Exit Sub
        Else
        Cancel = True
        ThisWorkbook.Application.DisplayAlerts = False
        ThisWorkbook.Application.Quit
    End If
    End If
End Sub

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...