Página 1 de 1

Código VBA botão cadastrar

Enviado: 27 Jul 2018 às 12:16
por SandroLima
Bom dia, amigos forumeiros

Poderiam me ajudar?

Comecei a escrever um código para um formulário de cadastro... no entanto o banco de dados encontra-se na forma de tabela.
Enquanto não era tabela deu certo. O que eu devo modificar na escrita do código nesse caso? Como declarar as variáveis e objetos?
Código: Selecionar todos
Private Sub cmb_Cadastrar_Click()

Dim ulinha As Long

ulinha = Worksheets("CLIENTES").Cells(Worksheets("CLIENTES").Rows.Count, 1).End(xlUp).Rows + 1


Cells(ulinha, 1).Value = Me.txt_ID
Cells(ulinha, 2).Value = Me.txt_Data
Cells(ulinha, 3).Value = Me.txt_Nome
Cells(ulinha, 4).Value = Me.txt_DataNasc
Cells(ulinha, 5).Value = Me.txt_Idade
Cells(ulinha, 6).Value = Me.cbb_Sexo
Cells(ulinha, 7).Value = Me.txt_CPF
Cells(ulinha, 8).Value = Me.txt_Naturalidade
Cells(ulinha, 9).Value = Me.cbb_UF_Nat
Cells(ulinha, 10).Value = Me.txt_Telefone

Columns.AutoFit
MsgBox "Cadastro efetuado com sucesso.", vbInformation, "Cadastro de Paciente"

Me.txt_ID = Empty
Me.txt_Data = Empty
Me.txt_Nome = Empty
Me.txt_DataNasc = Empty
Me.txt_Idade = Empty
Me.cbb_Sexo = Empty
Me.txt_CPF = Empty
Me.txt_Naturalidade = Empty
Me.cbb_UF_Nat = Empty
Me.txt_Telefone = Empty

txt_Data.SetFocus

End Sub
Preciso na ajuda do código para as seguintes necessidades:

1) Gerar ID automático
2) Ao digitar somente os números na TextBox DATA que ela já escreva no formato dd/mm/aaaa na própria TextBox . O mesmo vale para a TextBox data de nascimento.
3) Na TextBox Idade calculasse automaticamente a idade em anos e meses
4) A TextBox CPF aparecesse com a formatação automática para CPF ou CNPJ ao digitar os números
5) E por fim que a TextBox TELEFONE aparecesse com a formatação automática para 9 ou 8 dígitos após DDD E.: (##) # ####-####
6) Ao final ordenar os registros no banco de dados pelo nome do cliente através do código VBA.
Se possível deixar na forma de comentário como ficaria essa linha caso em vez de ordenar pelo nome eu quisesse ordenar pela data de cadastro - cadastros mais recentes no início (topo) da tabela.

Envio a planilha com o formulário em anexo se for preciso para alteração.

Muito obrigado a quem puder ajudar.

Re: Código VBA botão cadastrar

Enviado: 27 Jul 2018 às 14:16
por JCabral
Veja se ajuda, tente adaptar e melhorar

Re: Código VBA botão cadastrar

Enviado: 27 Jul 2018 às 17:16
por SandroLima
Boa tarde, JCabral. Boa tarde, demais colegas do fórum.

Obrigado pela atenção e rápida colaboração. E eu achando q estava indo bem nas primeiras escritas de código rsrs.

Que código é esse, mano?!?! Muito legal... me deu vontade de estudar ainda mais. Onde tiver oportunidade de deixar comentado é sempre bem-vindo e agradeço demais.

Estou testando aqui o código e me deparei com algumas situações que gostaria mais uma vez de sua ajuda ou quem mais puder colaborar.

1) Na TextBox DATA reparei que ao digitar o 2º caracter (número) ele adiciona um traço e desabilita a tecla NumLock (isso somente acontece ao fazer o primeiro registro ao abrir a planilha... nos registros seguintes isso não acontece)
Também notei que a tecla BackSpace (não apaga os "-" somente os números). O mesmo acontece na TextBox DATA NASC.
É possível corrigir isso?

2) No campo idade eu fiz uma alteração para inserir a palavra "anos" após o valor numérico... mas não soube como acrescentar a diferença entre os meses da data de cadastro e nascimento. Também seria interessante a opção de acrescentar a palavra mês (no singular) caso a diferença seja igual a 1 e meses caso seja superior a 1.

3) Na TextBox CPF gostaria que também estivesse habilitado para receber a formatação de CNPJ "##.###.###/####.##" uma vez que o cliente também pode ser Empresa.

4) Na TextBox Telefone se o número possuir o nono dígito ele perde a formatação (##) # ####-####. Quando o número possui 8 dígitos ele insere com a formatação correta (##) ####-####.

5) E como última consideração notei que ele não conta o último ou maior valor de registro (ID) do Banco de Dados... ele conta a última linha e com isso permite que um número de registro fique duplicado caso algum registro anterior tenha sido apagado como fiz em uma simulação (vou mandar em anexo a simulação).

Envio a planilha novamente com a simulação das situações acima relatadas.

E meu muito obrigado desde já.