Notifications
Clear all

Campo Preenchimento Obrigatório

3 Posts
2 Usuários
0 Reactions
1,488 Visualizações
(@tfcastro)
Posts: 131
Estimable Member
Topic starter
 

Ola Pessoal !

Estou tentando fazer com que a planilha não possa ser salva se não estiver preenchidas as Células C2, C3 e H2.
Achei o código abaixo em um Post antigo, mas ele só funciona se eu coloco uma célula no Range como está no exemplo abaixo, Range ("H2").
Se coloco Range ("C2:C3, H2"), dá erro.
Ou se eu coloco Range ("C2, C3, H2") ele só considera a primeira célula "C2", e deixa salvar mesmo que as demais células estiverem vazias.

Private Sub Workbook_BeforeClose(Cancel As Boolean)

    If Range("H2") = "" Then
    
        MsgBox "Preencha os Campos; Loja, Mês e Responsáveis!"
        
        Range("H2").Select
                
        Cancel = True
                
        Exit Sub
        
        Else
    
    End If

End Sub

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

     If Range("H2") = "" Then
    
        MsgBox "Preencha os Campos; Loja, Mês e Responsáveis!"
        
        Range("H2").Select
        
        Cancel = True
        
        Exit Sub
        
        Else
    
    End If

End Sub
 
Postado : 13/05/2015 2:06 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Castro, troque suas rotinas pelas abaixo, se quiser acrescentar mais condições é só adicionar outros ElseIf Range :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim strVazia
    Dim msg
    
    msg = "Preenchimento Obrigatório"   ' Define a mensagem
    
    If Range("C2").Value = "" Then
            strVazia = "Loja"
            MsgBox "Campo " & (strVazia & "  em Branco"), vbCritical, msg
            Range("C2").Activate
            Cancel = True
            Exit Sub
        
        ElseIf Range("C3").Value = "" Then
                    strVazia = "Mês"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("C3").Activate
                    Cancel = True
                Exit Sub
        
        ElseIf Range("H2").Value = "" Then
                    strVazia = "Responsáveis"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("H2").Activate
                    Cancel = True
                Exit Sub
                                
    Else
            
    End If

End Sub

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

    Dim strVazia
    Dim msg
    
    msg = "Preenchimento Obrigatório !!!"   ' Define a mensagem
    
    If Range("C2").Value = "" Then
            strVazia = "LOJA"
            MsgBox "Campo " & (strVazia & "  em Branco"), vbCritical, msg
            Range("C2").Activate
            Cancel = True
            Exit Sub
        
        ElseIf Range("C3").Value = "" Then
                    strVazia = "MÊS"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("C3").Activate
                    Cancel = True
                Exit Sub
        
        ElseIf Range("H2").Value = "" Then
                    strVazia = "RESPONSÁVEIS"
                    MsgBox "Campo " & (strVazia & " em Branco"), vbCritical, msg
                    Range("H2").Activate
                    Cancel = True
                Exit Sub
                                
    Else
            
    End If

End Sub

Faça os testes e veja se é isto.

 
Postado : 13/05/2015 5:46 pm
(@tfcastro)
Posts: 131
Estimable Member
Topic starter
 

Isso mesmo que eu queria !!
Não manjo muito de VBA obrigado !!

 
Postado : 14/05/2015 5:32 am