Notifications
Clear all

Campo (celula) obrigatória. Rodar ao salvar.

9 Posts
1 Usuários
0 Reactions
1,605 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Amigos, me ajudem por favor.

Preciso fazer com que o usuário só consiga salvar uma planilha se determinado campo (no caso uma célula), esteja preenchida.

Fiz um

IF range("A1").value = "" then
msgbox"campo obrigatório"
End if

Coloquei para rodar ao clicar no botão salvar. O caso é que ele roda a macro mas mesmo assim, salva o arquivo. Queria que somente salvasse se a célula A1 tiver diferente de "". Ou seja, preenchida.

Sabem como resolver ?

Obrigadooooo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/09/2013 12:27 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Não testado

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Range("A1").Value = "" Then
        MsgBox "campo obrigatório"
        Else
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs FileName:="C:Documents" & Range("A1"), _
        FileFormat:=(As desired), _
        CreateBackup:=False
        Application.DisplayAlerts = True
        ActiveWorkbook.Close SaveChanges:=False
    End If

End Sub

Leia:
http://msdn.microsoft.com/en-us/library ... 97585.aspx
http://www.rondebruin.nl/win/s5/win001.htm

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/09/2013 12:55 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Não testado

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If Range("A1").Value = "" Then
        MsgBox "campo obrigatório"
        Else
        Application.DisplayAlerts = False
        ActiveWorkbook.SaveAs FileName:="C:Documents" & Range("A1"), _
        FileFormat:=(As desired), _
        CreateBackup:=False
        Application.DisplayAlerts = True
        ActiveWorkbook.Close SaveChanges:=False
    End If

End Sub

Leia:
http://msdn.microsoft.com/en-us/library ... 97585.aspx
http://www.rondebruin.nl/win/s5/win001.htm

Att

Fala amigo, vou ler os links que postou.

A princípio eu não consegui. No código há uma parte que cita o endereço onde esta o arquivo. Não terei como saber.
O arquivo vai ficar na intranet. Quem baixar vai ter de preencher, salvar onde quiser e enviar por e-mail.
VBou ler os links para ver se encontro algo.

Muito obrigado pela ajuda.

Abraçooo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/09/2013 1:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Somente um if sem uma instrução do que fazer, a rotina tende a ser concluída. Experimente algo assim:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Range("A1").Value = "" Then
    MsgBox "Célula A1 é campo obrigatório"
    Cancel = True
End If
    End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/09/2013 1:13 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Somente um if sem uma instrução do que fazer, a rotina tende a ser concluída. Experimente algo assim:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Range("A1").Value = "" Then
    MsgBox "Célula A1 é campo obrigatório"
    Cancel = True
End If
    End Sub

Reinaldo, boa tarde.

Rapaz, ele executa mas mesmo assim salva.

Se eu deixar a1 em branco, ele mostra a mensagem mas mesmo assim salva.
;)

Mesmo assim, obrigado por responder. Sigo na luta. Tenho procurado pela net mas não achei nada até o momento.

Abraçooo

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2013 12:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

No teste simples que efetuei, não salva.
Experimente no anexo:
limpe o valor de A1 e salve; porem vale a máxima é preciso que as macros estejam habilitadas, caso contrário nada feito

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2013 12:31 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

O código citado está dentro de EstaPasta_de_trabalho??

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/09/2013 12:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

No teste simples que efetuei, não salva.
Experimente no anexo:
limpe o valor de A1 e salve; porem vale a máxima é preciso que as macros estejam habilitadas, caso contrário nada feito

Reinaldo e Alex,

funcionou. Eu havia colocado o código no modulo. Agora que coloquei no em "esta pasta de trabalho", ficou perfeito.

Muito obrigado amigos. Isto vai me ajudar num trabalho aqui na empresa.

Valeu, só tenho a agradecer a vocês.

Por isso que to sempre indicando o forum para meus amigos.

valeu !

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2013 6:32 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Como adicional, de uma lida nos Tópicos abaixo (de Adilson Soledade):
http://usuariosdoexcel.wordpress.com/20 ... lvar-como/
http://usuariosdoexcel.wordpress.com/20 ... s-e-agora/

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 18/09/2013 7:53 am