Ir ao conteúdo

Posts recomendados

Postado

Boa noite, galera!

Sou iniciante em programação e estou precisando de um help.

Quero formatar um campo de uma tabela para formato CPF/CNPJ, fiz um código usando a função FORMAT, porém quando digito o cpf no campo, nada acontece. O programa quando executado não dá nenhum erro, executa normalmente.

Consigo fazer o cadastro do cliente, mas não formata o campo.

 

Vou deixar o código abaixo, para poderem avaliar.

 

Sub cadastroclientes()
 
    Sheets("cad_clientes").Range("Q9").Value = Range("Q9") + 1

    Dim linha As Double
    Dim campo As Double
    Dim txt_cpf As Worksheet

   Set txt_cpf = Sheets("cad_clientes")
   txt_cpf.Select
   campo = txt_cpf.Range("k11")
      
    On Error GoTo erro

erro:

If Err.Number = 1004 Then

If Len(campo) = 11 Then
       campo = Format(campo, "000"".""000"".""000""-""00")
    ElseIf Len(campo) = 14 Then
       campo = Format(campo, "00"".""000"".""000""/""0000-00")
End If
    
    'Adicionar um novo cadastro
    linha = Sheets("lista_clientes").Cells(Rows.Count, 4).End(xlUp).Row + 1
   'inserir o ID no banco de dados
    Sheets("lista_clientes").Range("D" & linha) = Sheets("cad_clientes").Range("Q9")

 

'Limpar o valor da células OBS
    Sheets("cad_clientes").Range("E17") = ""
  
 'aparece uma mensagem de texto
    MsgBox "Cadastro adicionado com sucesso!", vbInformation, "Concluído!"
Else
    'edita cadastro
    linha = Application.WorksheetFunction.Match(busca, Sheets("lista_clientes").Range("D16:D"), 0)
End If
End Sub

 

Aguardo!

Postado
18 horas atrás, Gleiziane Fernanda disse:

... porém quando digito o cpf no campo, nada acontece.

Consigo fazer o cadastro do cliente, mas não formata o campo.

 

O código abaixo formata a célula K11 para CPF/CNPJ se houver nela ou 11 ou 14 dígitos.

obs.

1. coloque no lugar indicado as demais partes do seu código pois não entendi com clareza o que você deseja e há uma variável de nome busca que não está declarada e tampouco há qualquer valor atribuído a ela.

2. as ações do código serão executadas na planilha ativa (suponho que seja a planilha cad_clientes).

3. se você não conseguir então disponibilize uma amostra do seu arquivo Excel com as explicações exatas do que você deseja.

4. é possível incrementar o código final para rodar automaticamente ao inserir o CPF/CNPJ, informe se for do seu interesse

Sub FormataCPFCNPJ()
 Dim campo As String
  If Len([k11]) = 11 Then
   campo = Format([k11], "000"".""000"".""000""-""00")
  ElseIf Len([k11]) = 14 Then
   campo = Format([k11], "00"".""000"".""000""/""0000-00")
  Else: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS"
   [k11] = "": Exit Sub
  End If
  [k11] = campo
 
  'coloque aqui as demais partes do seu código
 
End Sub

 

Postado

Osvaldo,

 

A variável busca, será retirada, não tem utilidade nenhuma.

 

Eu usei seu código, mas não deu certo, quando executado aparece apenas a mensagem na tela: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS".

 

O campo, k11, é o do CPF/CNPJ, qual será digitado, e esse campo pertence a planilha "cad_clientes". Desejo que quando eu for digitando o numero, seja CNPJ ou CPF, o campo formate o mesmo de acordo com o valor digitado - 11 dígitos para CPF e 14 números para CNPJ.

A planilha "lista clientes", é onde será salvo o cadastro de clientes.

 

Segue abaixo o código completo:

 

Sub cadastroclientes()
 


    Sheets("cad_clientes").Range("Q9").Value = Range("Q9") + 1
    Dim linha As Double
    Dim txt_cpf As Worksheet
    Dim campo As String
    
   Set txt_cpf = Sheets("cad_clientes")
   txt_cpf.Select
   campo = txt_cpf.Range("k11")

If Len(campo) = 11 Then
       campo = Format(campo, "000"".""000"".""000""-""00")
   ElseIf Len(campo) = 14 Then
       campo = Format(campo, "00"".""000"".""000""/""0000-00")
End If
             
           
    On Error GoTo erro

erro:

If Err.Number = 1004 Then

   
    'Adicionar um novo cadastro
    linha = Sheets("lista_clientes").Cells(Rows.Count, 4).End(xlUp).Row + 1
    
   'inserir o ID no banco de dados
    Sheets("lista_clientes").Range("D" & linha) = Sheets("cad_clientes").Range("Q9")
    
    'inserir o NOME no banco de dados
    Sheets("lista_clientes").Range("E" & linha) = Sheets("cad_clientes").Range("E11")
    
    'inserir o CPF/CNPJ no banco de dados
    Sheets("lista_clientes").Range("F" & linha) = Sheets("cad_clientes").Range("K11")
    
    'inserir o E-MAIL no banco de dados
    Sheets("lista_clientes").Range("G" & linha) = Sheets("cad_clientes").Range("O11")
    
    'inserir o TELEFONE no banco de dados
    Sheets("lista_clientes").Range("H" & linha) = Sheets("cad_clientes").Range("E13")
    
    'inserir o CELULAR no banco de dados
    Sheets("lista_clientes").Range("I" & linha) = Sheets("cad_clientes").Range("H13")
    
    'inserir o ENDEREÇO no banco de dados
    Sheets("lista_clientes").Range("J" & linha) = Sheets("cad_clientes").Range("K13")
    
    'inserir o CEP no banco de dados
    Sheets("lista_clientes").Range("K" & linha) = Sheets("cad_clientes").Range("Q15")
    
    'inserir o UF no banco de dados
    Sheets("lista_clientes").Range("L" & linha) = Sheets("cad_clientes").Range("E15")
    
    'inserir o CIDADE no banco de dados
    Sheets("lista_clientes").Range("M" & linha) = Sheets("cad_clientes").Range("G15")
    
    'inserir o DATA DE NASCIMENTO no banco de dados
    Sheets("lista_clientes").Range("N" & linha) = Sheets("cad_clientes").Range("L15")
    
    'inserir o DATA DE CADASTRO no banco de dados
    Sheets("lista_clientes").Range("O" & linha) = Sheets("cad_clientes").Range("D9")
    
    'inserir o COMO INDICAÇÃO no banco de dados
    Sheets("lista_clientes").Range("P" & linha) = Sheets("cad_clientes").Range("P15")
    
    'inserir o OBS no banco de dados
    Sheets("lista_clientes").Range("Q" & linha) = Sheets("cad_clientes").Range("E17")
        

         
    'Limpar o valor da células NOME
    Sheets("cad_clientes").Range("E11") = ""
    
    'Limpar o valor da células CPF/CNPJ
    Sheets("cad_clientes").Range("k11") = ""
    
    'Limpar o valor da células E-MAIL
    Sheets("cad_clientes").Range("O11") = ""
    
    'Limpar o valor da células TELEFONE
    Sheets("cad_clientes").Range("E13") = ""
    
    'Limpar o valor da células CELULAR
    Sheets("cad_clientes").Range("H13") = ""
    
    'Limpar o valor da células ENDEREÇO
    Sheets("cad_clientes").Range("k13") = ""
    
    'Limpar o valor da células CEP
    Sheets("cad_clientes").Range("Q15") = ""
    
    'Limpar o valor da células UF
    Sheets("cad_clientes").Range("E15") = ""
    
    'Limpar o valor da células CIDADE
    Sheets("cad_clientes").Range("G15") = ""
    
    'Limpar o valor da células DATA_NASCIMENTO
    Sheets("cad_clientes").Range("L15") = ""
    
    'Limpar o valor da células DATA_CADASTRO
    'Sheets("cad_clientes").Range("D9") = ""
    
    'Limpar o valor da células INDICAÇÃO
    Sheets("cad_clientes").Range("P15") = ""
    
    'Limpar o valor da células OBS
    Sheets("cad_clientes").Range("E17") = ""
        
         
    'aparece uma mensagem de texto
    MsgBox "Cadastro adicionado com sucesso!", vbInformation, "Concluído!"
        
Else
    linha = Application.WorksheetFunction.Match(Sheets("lista_clientes").Range("D16:D"), 0)
        
End If
End Sub

 

 

 

adicionado 2 minutos depois
Em 05/01/2019 às 15:12, osvaldomp disse:

 

O código abaixo formata a célula K11 para CPF/CNPJ se houver nela ou 11 ou 14 dígitos.

obs.

1. coloque no lugar indicado as demais partes do seu código pois não entendi com clareza o que você deseja e há uma variável de nome busca que não está declarada e tampouco há qualquer valor atribuído a ela.

2. as ações do código serão executadas na planilha ativa (suponho que seja a planilha cad_clientes).

3. se você não conseguir então disponibilize uma amostra do seu arquivo Excel com as explicações exatas do que você deseja.

4. é possível incrementar o código final para rodar automaticamente ao inserir o CPF/CNPJ, informe se for do seu interesse


Sub FormataCPFCNPJ()
 Dim campo As String
  If Len([k11]) = 11 Then
   campo = Format([k11], "000"".""000"".""000""-""00")
  ElseIf Len([k11]) = 14 Then
   campo = Format([k11], "00"".""000"".""000""/""0000-00")
  Else: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS"
   [k11] = "": Exit Sub
  End If
  [k11] = campo
 
  'coloque aqui as demais partes do seu código
 
End Sub

Osvaldo,

 

A variável busca, será retirada, não tem utilidade nenhuma.

 

Eu usei seu código, mas não deu certo, quando executado aparece apenas a mensagem na tela: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS".

 

O campo, k11, é o do CPF/CNPJ, qual será digitado, e esse campo pertence a planilha "cad_clientes". Desejo que quando eu for digitando o numero, seja CNPJ ou CPF, o campo formate o mesmo de acordo com o valor digitado - 11 dígitos para CPF e 14 números para CNPJ.

A planilha "lista clientes", é onde será salvo o cadastro de clientes.

 

Segue abaixo o código completo:

 

Sub cadastroclientes()
 


    Sheets("cad_clientes").Range("Q9").Value = Range("Q9") + 1
    Dim linha As Double
    Dim txt_cpf As Worksheet
    Dim campo As String
    
   Set txt_cpf = Sheets("cad_clientes")
   txt_cpf.Select
   campo = txt_cpf.Range("k11")

If Len(campo) = 11 Then
       campo = Format(campo, "000"".""000"".""000""-""00")
   ElseIf Len(campo) = 14 Then
       campo = Format(campo, "00"".""000"".""000""/""0000-00")
End If
             
           
    On Error GoTo erro

erro:

If Err.Number = 1004 Then

   
    'Adicionar um novo cadastro
    linha = Sheets("lista_clientes").Cells(Rows.Count, 4).End(xlUp).Row + 1
    
   'inserir o ID no banco de dados
    Sheets("lista_clientes").Range("D" & linha) = Sheets("cad_clientes").Range("Q9")
    
    'inserir o NOME no banco de dados
    Sheets("lista_clientes").Range("E" & linha) = Sheets("cad_clientes").Range("E11")
    
    'inserir o CPF/CNPJ no banco de dados
    Sheets("lista_clientes").Range("F" & linha) = Sheets("cad_clientes").Range("K11")
    
    'inserir o E-MAIL no banco de dados
    Sheets("lista_clientes").Range("G" & linha) = Sheets("cad_clientes").Range("O11")
    
    'inserir o TELEFONE no banco de dados
    Sheets("lista_clientes").Range("H" & linha) = Sheets("cad_clientes").Range("E13")
    
    'inserir o CELULAR no banco de dados
    Sheets("lista_clientes").Range("I" & linha) = Sheets("cad_clientes").Range("H13")
    
    'inserir o ENDEREÇO no banco de dados
    Sheets("lista_clientes").Range("J" & linha) = Sheets("cad_clientes").Range("K13")
    
    'inserir o CEP no banco de dados
    Sheets("lista_clientes").Range("K" & linha) = Sheets("cad_clientes").Range("Q15")
    
    'inserir o UF no banco de dados
    Sheets("lista_clientes").Range("L" & linha) = Sheets("cad_clientes").Range("E15")
    
    'inserir o CIDADE no banco de dados
    Sheets("lista_clientes").Range("M" & linha) = Sheets("cad_clientes").Range("G15")
    
    'inserir o DATA DE NASCIMENTO no banco de dados
    Sheets("lista_clientes").Range("N" & linha) = Sheets("cad_clientes").Range("L15")
    
    'inserir o DATA DE CADASTRO no banco de dados
    Sheets("lista_clientes").Range("O" & linha) = Sheets("cad_clientes").Range("D9")
    
    'inserir o COMO INDICAÇÃO no banco de dados
    Sheets("lista_clientes").Range("P" & linha) = Sheets("cad_clientes").Range("P15")
    
    'inserir o OBS no banco de dados
    Sheets("lista_clientes").Range("Q" & linha) = Sheets("cad_clientes").Range("E17")
        

         
    'Limpar o valor da células NOME
    Sheets("cad_clientes").Range("E11") = ""
    
    'Limpar o valor da células CPF/CNPJ
    Sheets("cad_clientes").Range("k11") = ""
    
    'Limpar o valor da células E-MAIL
    Sheets("cad_clientes").Range("O11") = ""
    
    'Limpar o valor da células TELEFONE
    Sheets("cad_clientes").Range("E13") = ""
    
    'Limpar o valor da células CELULAR
    Sheets("cad_clientes").Range("H13") = ""
    
    'Limpar o valor da células ENDEREÇO
    Sheets("cad_clientes").Range("k13") = ""
    
    'Limpar o valor da células CEP
    Sheets("cad_clientes").Range("Q15") = ""
    
    'Limpar o valor da células UF
    Sheets("cad_clientes").Range("E15") = ""
    
    'Limpar o valor da células CIDADE
    Sheets("cad_clientes").Range("G15") = ""
    
    'Limpar o valor da células DATA_NASCIMENTO
    Sheets("cad_clientes").Range("L15") = ""
    
    'Limpar o valor da células DATA_CADASTRO
    'Sheets("cad_clientes").Range("D9") = ""
    
    'Limpar o valor da células INDICAÇÃO
    Sheets("cad_clientes").Range("P15") = ""
    
    'Limpar o valor da células OBS
    Sheets("cad_clientes").Range("E17") = ""
        
         
    'aparece uma mensagem de texto
    MsgBox "Cadastro adicionado com sucesso!", vbInformation, "Concluído!"
        
Else
    linha = Application.WorksheetFunction.Match(Sheets("lista_clientes").Range("D16:D"), 0)
        
End If
End Sub

 

Postado
21 horas atrás, Gleiziane Fernanda disse:

Eu usei seu código, mas não deu certo, quando executado aparece apenas a mensagem na tela: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS".

 

Isso significa que você não está inserindo nem um conteúdo com 11 dígitos e nem com 14 (ou está  inserindo com zero inicial).

Insira apenas apenas dígitos.

 

1. inicialmente formate K11 para Texto (assim será aceito o zero inicial, se existir)

2. para inserir CPF ~~~> 11 dígitos ~~~> ex. ~~~> 12345678900 ou 01234567891

3. para inserir CNPJ ~~~> 14 dígitos ~~~> ex. ~~~> 12345678912345 ou 01234567891234

4. em seguida rode o código

 

 

 

Postado
Em 07/01/2019 às 20:34, osvaldomp disse:

 

Isso significa que você não está inserindo nem um conteúdo com 11 dígitos e nem com 14 (ou está  inserindo com zero inicial).

Insira apenas apenas dígitos.

 

1. inicialmente formate K11 para Texto (assim será aceito o zero inicial, se existir)

2. para inserir CPF ~~~> 11 dígitos ~~~> ex. ~~~> 12345678900 ou 01234567891

3. para inserir CNPJ ~~~> 14 dígitos ~~~> ex. ~~~> 12345678912345 ou 01234567891234

4. em seguida rode o código

 

 

 

Oi, Osvaldo
O código funcionou, após ter formatado o campo. 
Mas invês do campo K11 receber a formatação, quem recebeu foi o coluna CPF/CNPJ da tabela lista_clientes, a cada novo cadastro.
Estou digitando o cpf no campo k11, e não muda a formatação (ver imagem anexada), mas quando clico em cadastrar, e os dados são salvos na tabela de clientes, a formatação é feita (vê imagem anexada).

 

Quando eu coloco o campo k11 como formato de texto, ele vê como um erro, pois digito números.
   

telacadastro.PNG

telaclientes.PNG

Postado

Disponibilize uma amostra do seu arquivo Excel com os códigos instalados. Imagens não servem.

  • Solução
Postado
16 horas atrás, Gleiziane Fernanda disse:

Estou digitando o cpf no campo k11, e não muda a formatação...

A formatação ocorre ao rodar o código cadastroclientes. No entanto, se você quer que a formatação ocorra automaticamente após preencher K11 então instale o código abaixo no módulo da planilha cad_clientes e remova o código que você acrescentou ao seu código original (o código que passei no post #2).

 

Quando eu coloco o campo k11 como formato de texto, ele vê como um erro, pois digito números. 

É só uma indicação e em nada interfere. Caso você não queira ver o sinal de erro: Arquivo / Opções / Fórmulas / Verificação de Erros / desmarque Habilitar verificação de erros ...

 

Instale o código abaixo no módulo da planilha cad_clientes. Para acessar o módulo clique com o direito na guia daquela planilha e escolha Exibir Código.

Public c As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim campo As String
  If c Then Exit Sub
  If Target.Address <> "$K$11" Then Exit Sub
  If Target.Value = "" Then Exit Sub
  If Len([k11]) = 11 Then
   campo = Format([k11], "000"".""000"".""000""-""00")
  ElseIf Len([k11]) = 14 Then
   campo = Format([k11], "00"".""000"".""000""/""0000-00")
  Else: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS"
   c = True: [k11] = "": c = False: Exit Sub
  End If
  c = True: [k11] = campo: c = False
End Sub

 

Postado
6 horas atrás, osvaldomp disse:

 

Instale o código abaixo no módulo da planilha cad_clientes. Para acessar o módulo clique com o direito na guia daquela planilha e escolha Exibir Código.


Public c As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim campo As String
  If c Then Exit Sub
  If Target.Address <> "$K$11" Then Exit Sub
  If Target.Value = "" Then Exit Sub
  If Len([k11]) = 11 Then
   campo = Format([k11], "000"".""000"".""000""-""00")
  ElseIf Len([k11]) = 14 Then
   campo = Format([k11], "00"".""000"".""000""/""0000-00")
  Else: MsgBox "OBRIGATÓRIO 11 OU 14 DÍGITOS"
   c = True: [k11] = "": c = False: Exit Sub
  End If
  c = True: [k11] = campo: c = False
End Sub

 

Osvaldo,

 

Não tenho palavras para dizer, como estou grata, não somente pela ajuda, mas pela atenção e prontidão.
Funcionou perfeitamente, do jeitinho que eu queria.

Sou formada em sistemas de formação, mas nunca me interessei por programação, sempre achei um bicho de sete cabeças, e nunca me achei capaz de conseguir executar um código (rs), mas faz pouco tempo que decidi desenvolver essa planilha, e percebi que era mais capaz do que imaginava.  

E me sinto realizada por entender o que você passou, conseguir executar e dá tudo certo no final.

Muito, muito obrigada mesmo!
Tendo mais dúvidas, volto!
 

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 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...