[MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros - Tomás Vásquez Fórum
[MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros
Mensagem por Mikel Silveira Fraga » Ter Jul 26, 2016 4:48 pm
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:
- 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 273 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.
Re: [MODELO] Objeto Módulo Classe - Validação Documentos Brasileiros
Mensagem por netocasaroli » Sex Jul 29, 2016 10:38 pm
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.
Mensagem por Mikel Silveira Fraga » Sáb Jul 30, 2016 6:55 am
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.