Notifications
Clear all

Comando salvar com preenchimento de campos obrigatorios - VB

3 Posts
2 Usuários
0 Reactions
1,162 Visualizações
(@marcos)
Posts: 2
Active Member
Topic starter
 

Criei uma VBA para cadastro de clientes. Gostaria que alguns campos fossem de preenchimento obrigatório. Fiz a programação mas quando digito algo nos campos que programei para não serem obrigatórios e clico em salvar, aparece as msgs para preenchimento dos obrigatórios mas salva no planilha de banco de dados da mesma forma. Como faço para corrigir isso. Segue minha programação:

Private Sub SALVAR_Click()
totalregistro = Worksheets("BANCO DE DADOS").UsedRange.Rows.Count + 1
With Worksheets("BANCO DE DADOS")
.Cells(totalregistro, 1) = Cliente
.Cells(totalregistro, 2) = Função
.Cells(totalregistro, 3) = RAZÃO
.Cells(totalregistro, 4) = FANTASIA
.Cells(totalregistro, 5) = Pessoa
.Cells(totalregistro, 6) = CPF
.Cells(totalregistro, 7) = INSCRIÇÃO
.Cells(totalregistro, 8) = FONE1
.Cells(totalregistro, 9) = FONE2
.Cells(totalregistro, 10) = FAX
.Cells(totalregistro, 11) = CELULAR
.Cells(totalregistro, 12) = CONTATO
.Cells(totalregistro, 13) = EMAIL1
.Cells(totalregistro, 14) = EMAIL2
.Cells(totalregistro, 15) = SITE
.Cells(totalregistro, 16) = CEP
.Cells(totalregistro, 17) = ENDEREÇO
.Cells(totalregistro, 18) = NÚMERO
.Cells(totalregistro, 19) = BAIRRO
.Cells(totalregistro, 20) = CIDADE
.Cells(totalregistro, 21) = estado
.Cells(totalregistro, 22) = OBSERVAÇÕES

End With

If Cliente.Text = "" Then
MsgBox "Escolher cliente, Fornecedor, ou Colaborador"
Exit Sub
ElseIf RAZÃO.Text = "" Then
MsgBox "Preencha o campo Nome/Razão Social"
ElseIf CPF.Text = "" Then
MsgBox "Preencha o campo CPF/ CNPJ"
ElseIf FONE1.Text = "" Then
MsgBox "Peencha o campo Fone1"

Else
MsgBox "Salvo com sucesso"

End If

End Sub

Obrigado desde já!
Abraços

 
Postado : 13/04/2013 9:42 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Tente assim

Dim Msg
Msg = "Preenchimento Obrigatório"   ' Define a mensagem

    If Cliente.Text.Value = "" Then
            strVazia = "Cliente"
                MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
                Cliente.Text.SetFocus
                
        ElseIf RAZÃO.Text.Value = "" Then
            strVazia = "Razao Social"
                MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
                RAZÃO.Text.SetFocus
        
        ElseIf CPF.Text.Value = "" Then
            strVazia = "CPF/CNPJ"
                MsgBox (strVazia & ",  INVALIDA"), vbCritical, Msg
                CPF.Text.SetFocus
                
        ElseIf FONE1.Text.Value = "" Then
            strVazia = "Fone1"
                MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
                FONE1.Text.SetFocus
                
    Else
        
        'Se todos os Campos Preenchidos
        'Continua a Ação
        'COLOQUE AQUI SUA ROTINNA PARA CONTINUAR
        
    End If
End Sub
 
Postado : 13/04/2013 9:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Contribuindo:
Apesar de seu codigo "questionar" os campos obrigatórios; primeiro insere os dados no banco, para depois efetuar o questionamento; quando deveria ser o inverso.

Então sua rotina poderia ser:

Private Sub SALVAR_Click()
Dim TotalRegistro As Long
TotalRegistro = Worksheets("BANCO DE DADOS").UsedRange.Rows.Count + 1
    
If Cliente.Text = "" Then
    MsgBox "Escolher cliente, Fornecedor, ou Colaborador"
    Exit Sub
ElseIf RAZÃO.Text = "" Then
    MsgBox "Preencha o campo Nome/Razão Social"
    Exit Sub
ElseIf CPF.Text = "" Then
    MsgBox "Preencha o campo CPF/ CNPJ"
    Exit Sub
ElseIf FONE1.Text = "" Then
    MsgBox "Peencha o campo Fone1"
    Exit Sub
Else
With Worksheets("BANCO DE DADOS")
    .Cells(TotalRegistro, 1) = Cliente
    .Cells(TotalRegistro, 2) = Função
    .Cells(TotalRegistro, 3) = RAZÃO
    .Cells(TotalRegistro, 4) = FANTASIA
    .Cells(TotalRegistro, 5) = Pessoa
    .Cells(TotalRegistro, 6) = CPF
    .Cells(TotalRegistro, 7) = INSCRIÇÃO
    .Cells(TotalRegistro, 8) = FONE1
    .Cells(TotalRegistro, 9) = FONE2
    .Cells(TotalRegistro, 10) = FAX
    .Cells(TotalRegistro, 11) = CELULAR
    .Cells(TotalRegistro, 12) = CONTATO
    .Cells(TotalRegistro, 13) = EMAIL1
    .Cells(TotalRegistro, 14) = EMAIL2
    .Cells(TotalRegistro, 15) = SITE
    .Cells(TotalRegistro, 16) = CEP
    .Cells(TotalRegistro, 17) = ENDEREÇO
    .Cells(TotalRegistro, 18) = NÚMERO
    .Cells(TotalRegistro, 19) = BAIRRO
    .Cells(TotalRegistro, 20) = CIDADE
    .Cells(TotalRegistro, 21) = estado
    .Cells(TotalRegistro, 22) = OBSERVAÇÕES
End With
    MsgBox "Salvo com sucesso"
End If
End Sub

Se quiser utilizar a proposta do colega Alexandre, seu codigo ficaria:

Private Sub SALVAR_Click()
Dim TotalRegistro As Long
Dim Msg
TotalRegistro = Worksheets("BANCO DE DADOS").UsedRange.Rows.Count + 1
    
Msg = "Preenchimento Obrigatório"   ' Define a mensagem

If Cliente.Text.Value = "" Then
        strVazia = "Cliente"
        MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
        Cliente.Text.SetFocus
ElseIf RAZÃO.Text.Value = "" Then
        strVazia = "Razao Social"
        MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
        RAZÃO.Text.SetFocus
ElseIf CPF.Text.Value = "" Then
        strVazia = "CPF/CNPJ"
        MsgBox (strVazia & ",  INVALIDA"), vbCritical, Msg
        CPF.Text.SetFocus
ElseIf FONE1.Text.Value = "" Then
        strVazia = "Fone1"
        MsgBox (strVazia & ",  INVALIDO"), vbCritical, Msg
        FONE1.Text.SetFocus
Else
    With Worksheets("BANCO DE DADOS")
        .Cells(TotalRegistro, 1) = Cliente
        .Cells(TotalRegistro, 2) = Função
        .Cells(TotalRegistro, 3) = RAZÃO
        .Cells(TotalRegistro, 4) = FANTASIA
        .Cells(TotalRegistro, 5) = Pessoa
        .Cells(TotalRegistro, 6) = CPF
        .Cells(TotalRegistro, 7) = INSCRIÇÃO
        .Cells(TotalRegistro, 8) = FONE1
        .Cells(TotalRegistro, 9) = FONE2
        .Cells(TotalRegistro, 10) = FAX
        .Cells(TotalRegistro, 11) = CELULAR
        .Cells(TotalRegistro, 12) = CONTATO
        .Cells(TotalRegistro, 13) = EMAIL1
        .Cells(TotalRegistro, 14) = EMAIL2
        .Cells(TotalRegistro, 15) = SITE
        .Cells(TotalRegistro, 16) = CEP
        .Cells(TotalRegistro, 17) = ENDEREÇO
        .Cells(TotalRegistro, 18) = NÚMERO
        .Cells(TotalRegistro, 19) = BAIRRO
        .Cells(TotalRegistro, 20) = CIDADE
        .Cells(TotalRegistro, 21) = estado
        .Cells(TotalRegistro, 22) = OBSERVAÇÕES
    End With
    MsgBox "Salvo com sucesso"
End If
End Sub

Observação: Nenhuma das rotinas foi testada

 
Postado : 13/04/2013 11:35 am