Formulário de Múltiplas Etapas em Excel VBA: Validações e Otimização de Código
Olá e seja muito bem-vindo(a) à aula final do nosso curso sobre a criação de formulários de múltiplas etapas em Excel VBA. Hoje, vamos concluir nosso projeto com um passo crucial: as validações. Você aprenderá a verificar se campos obrigatórios foram preenchidos e a garantir que os dados inseridos, como datas, estejam no formato correto antes de serem salvos na sua planilha.
A importância da Validação de Dados
Imagine a seguinte situação: você clica no botão “Salvar” e o sistema informa que “Preencha o campo Descrição”. Em seguida, ao preencher, o formulário o direciona de volta para a etapa correta. É exatamente esse tipo de validação que implementaremos para garantir a integridade dos dados.
Validar as informações antes de enviá-las para sua planilha é fundamental para evitar erros e garantir que seu banco de dados seja confiável. Abordaremos validações como:
- Campos Obrigatórios: Garantir que campos essenciais, como a descrição do produto, não fiquem em branco.
- Formato de Dados: Verificar se um valor digitado no campo “Validade” é, de fato, uma data.
- Dados do Fornecedor: Assegurar que informações como Nome/Razão Social, CPF/CNPJ, entre outras, sejam inseridas antes de salvar.
O Código por Trás do Botão Salvar
Na aula anterior, começamos a escrever o código para salvar os dados. Se você acompanhou, seu código deve estar preenchendo as informações do produto até o campo “Validade”. Para completar, adicione o restante dos campos:
Private Sub BtSalvar_Click()
Dim lin As Long
lin = PlanBase.Range("B:B").Find(Empty, PlanBase.Range("B10")).Row
If lin = 11 Then
PlanBase.Cells(lin, "B").Value = 1
Else
PlanBase.Cells(lin, "B").Value = PlanBase.Cells(lin - 1, "B").Value + 1
End If
PlanBase.Cells(lin, "C").Value = TxtDescricao.Text
PlanBase.Cells(lin, "D").Value = TxtCodigo.Text
PlanBase.Cells(lin, "E").Value = TxtCategoria.Text
PlanBase.Cells(lin, "F").Value = TxtValidade.Text
PlanBase.Cells(lin, "G").Value = TxtRazao.Text
PlanBase.Cells(lin, "H").Value = TxtDocumento.Text
PlanBase.Cells(lin, "I").Value = TxtPessoaContato.Text
PlanBase.Cells(lin, "J").Value = TxtContato.Text
PlanBase.Cells(lin, "K").Value = TxtEmail.Text
PlanBase.Cells(lin, "L").Value = TxtPreco.Text
PlanBase.Cells(lin, "M").Value = TxtQtdEstoque.Text
PlanBase.Cells(lin, "N").Value = TxtEstoqueMinimo.Text
PlanBase.Cells(lin, "O").Value = TxtBanco.Text
PlanBase.Cells(lin, "P").Value = TxtAgencia.Text
PlanBase.Cells(lin, "Q").Value = TxtConta.Text
PlanBase.Cells(lin, "R").Value = TxtTipoConta.Text
End Sub
Code language: PHP (php)
Otimizando o Código com a Planilha Modelo 3.0
Observe a quantidade de código que foi necessária apenas para a funcionalidade de salvar, sem nenhuma validação. Agora, imagine uma abordagem mais otimizada.
Com a “Planilha Modelo 3.0”, que possui configurações para trabalhar com diversos bancos de dados como Access, PostgreSQL, SQLite e MySQL, a funcionalidade de salvar é drasticamente simplificada. Em vez de dezenas de linhas de código, precisaríamos de apenas uma:
Call Salvar("produtos", Me, Alerta:="Produtos")
Code language: JavaScript (javascript)
Essa única linha já inclui validações de campos obrigatórios, verifica se um produto já está cadastrado e até integra um calendário para a seleção de datas, mostrando o poder de um código bem estruturado e reutilizável.
Implementando as Validações: Método Tradicional
Voltando ao nosso projeto, vamos implementar as validações da maneira tradicional.
1. Verificando Campos Obrigatórios
Para verificar se o campo de descrição do produto está preenchido, adicionaremos o seguinte código no início do procedimento BtSalvar_Click:
If TxtDescricao.Text = Empty Then
MsgBox "Preencha o campo Descrição", vbCritical, "APRENDENDO VBA"
MpConteudo.Value = 1
Call BtVoltar_Click
Exit Sub
End If
Code language: PHP (php)
Este trecho de código faz o seguinte:
- Verifica se o campo TxtDescricao está vazio.
- Se estiver, exibe uma mensagem de erro.
- Retorna o usuário para a primeira página do formulário.
- Interrompe a execução da macro com Exit Sub para que os dados não sejam salvos.
Você pode replicar essa estrutura para todos os outros campos que considerar obrigatórios.
2. Validando Datas
Um problema comum é o Excel interpretar datas de forma incorreta (por exemplo, 05/06/2025 como 06/05/2025). Para evitar isso e garantir que apenas datas válidas sejam inseridas, podemos usar a função IsDate e CDate.
Primeiro, verificamos se o que foi digitado é realmente uma data:
If VBA.IsDate(TxtValidade.Text) = True Then
PlanBase.Cells(lin, "F").Value = VBA.CDate(TxtValidade.Text)
Else
PlanBase.Cells(lin, "F").Value = Empty
End If
Code language: PHP (php)
Este código garante que:
- Se o texto em TxtValidade for uma data válida, ele será convertido para o formato de data correto (CDate) e salvo na planilha.
- Caso contrário, o campo na planilha ficará vazio, evitando erros.
3. Verificando Campos Numéricos
Para campos como “Quantidade em Estoque”, que devem conter apenas números, podemos utilizar a função IsNumeric:
If VBA.IsNumeric(TxtQtdEstoque.Text) = True Then
If TxtQtdEstoque.Text < 0 Then
MsgBox "Estoque negativo não é permitido", vbCritical, "Aprendendo VBA"
Exit Sub
End If
End If
Code language: PHP (php)
Este código verifica duas coisas:
- Se o valor inserido é numérico.
- Se o número é menor que zero, exibindo uma mensagem de erro e impedindo o salvamento.
Conclusão
Chegamos ao fim deste curso, e agora você tem um formulário de múltiplas etapas funcional e com as principais validações implementadas. Embora o método tradicional exija mais código, ele é fundamental para o aprendizado e a compreensão da lógica por trás do VBA.
Se você se interessou pela otimização e gostaria de acelerar o desenvolvimento dos seus projetos, considere conhecer a Planilha Modelo 3.0.
Obrigado por acompanhar até aqui! Deixe nos comentários se você concluiu o projeto.
Palavras-chave: Formulário VBA Excel, Múltiplas Etapas VBA, Validação de Dados Excel, UserForm VBA, Código VBA Salvar, IsDate VBA, IsNumeric VBA, CDate VBA, Planilha Modelo 3.0, Curso VBA Excel.
0 Comentários