Página 1 de 1

[MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros

Enviado: Ter Jul 26, 2016 4:48 pm
por Mikel Silveira Fraga
Boa tarde a todos.

Venho com mais um modelo para os amigos do fórum.

A alguns meses, venho aprendendo a trabalhar com a criação de Objetos, através do Módulo de Classe, localizado no Visual Basic Editor. Para meu aprendizado, desenvolvi uma classe que realiza Validação do Dígito Verificador de documentos brasileiros, como:
- Cadastro Nacional de Pessoa Jurídica (CNPJ);
- Cadastro de Pessoa Física (CPF);
- Título de Eleitor (TE);
- Documento Fiscal Eletrônico (DFe).
Ps.1: Quero ressaltar que os códigos para a realização dos cálculos, foram baseados em modelos de outros sites da web. Dentro da Classe ValidadeDocument, estão localizados todas as referências dos autores que desenvolveram os códigos originais.

Além da função de Validação do Dígito Verificador, o Objeto criado também altera a formatação dos documentos, adicionando/removendo os caracteres especiais existentes na formatação dos documentos.

A proposta do modelo em anexo é demonstrar essas funcionalidades de duas formas diferentes:
- A 1ª forma é através de Userform, onde pode ser utilizada para validar documentos em um cadastro de clientes, por exemplo;
- A 2ª forma é através da Criação de Funções(Function) como Fórmulas do Excel.
ModClasse para Validar Documentos.zip
Desenvolvido por: Mikel S Fraga
(57.88 KiB) Baixado 630 vezes
Gostaria muito que o projeto fosse não apenas baixado e utilizado/adaptado pelos usuários, mas sim avaliado de forma um pouco criteriosa, principalmente pelos usuários que entendam um pouco sobre Programação Orientada a Objeto no VB6/VBA. Através de sugestões, quero melhorara estrutura de desenvolvimento deste formato.

Ps.2: Este modelo também se encontra no fórum do Guru do Excel.
Espero que todos gostem e conto com a colaboração de todos nesta avaliação.

Abraço a todos e excelente semana.

Re: [MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros

Enviado: Sex Jul 29, 2016 10:38 pm
por netocasaroli
Boa noite Mikel,

Primeiramente, parabéns pelo projeto.

Fiz um teste aqui e notei a seguinte situação. Se digito no UserForm um CPF com o DV correto e clico para verificar, ele retorna a validação correta. No entanto, se eu clicar primeiro em "Inserir Formatação" e depois em "Validar Dígito Verificador", ele retorna a validação errada.

Tomei a liberdade de depurar o seu código. Na sub CheckDocument, mesmo a variável pNrDoc não ser uma Null String, no comando If pNrDoc <> "" Then a rotina está interpretando a variável como Null String. Dessa forma, a variável pNrDoc não assume o valor da aNrDoc, não concluindo corretamente o processo de validação. Na verdade, quando o depurador entra em CheckDocument, a variável pNrDoc assume o valor Null, mas no próximo passo do depurador, se verificar da janela de Verificação Imediada o valor de pNrDoc, verá o valor do CPF com a formatação.

Espero ter ajudado um pouco.

Um abraço e bom final de semana.

Re: [MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros

Enviado: Sáb Jul 30, 2016 6:55 am
por Mikel Silveira Fraga
Neto, bom dia.

Não havia percebido esse erro, mas vou dar uma olhada depois. Na verdade, apesar de parecer a mesma coisa dos demais desenvolvimentos no VBA, a recurso de Criação de Classes é bem novo pra mim.

No início desse ano, comecei a montar um outra classe, muito maior do que essa. Porém, na época, eu realmente não compreendi muito o seu funcionamento, de forma que continuei a evolução, mas de uma forma totalmente desordenada e indo contra o Conceito de Programação Orientada a Objetos. Porém, vi que o resultado, mesmo a classe estando totalmente disforme, foi surpreendente.

Por esse motivo, resolvi montar uma classe que fosse útil, porém mais simples, para testar e compartilhar com os amigos. Além de ser uma forma de me auto-avaliar com o desempenho e retorno de cada um de vocês. Por esse motivo havia pedido que testassem e me retornassem erros e opiniões.

Então cara, não se preocupe com a questão da liberdade. Essa sua observação e apontamento são mais do que válidos para mim.

Bem, vou indo nessa. Excelente final de semana, pra ti e todos do fórum.