Digitação automática de zeros Excel VBA

Objetivo: Demonstrar a utilização de códigos VBA para inserir dados automaticamente no Excel, por exemplo, zeros á esquerda ou retirar a vírgula de um número decimal e formatar com zeros á esquerda.

Esta digitação automática de dados no Excel pode ser muito útil para cadastro de dados faltantes em arquivos texto formatados por exemplo.

Na planilha exemplo foram criados dois campos, um para digitação da loja, aonde pode ser digitado apenas o número 1, e os zeros á esquerda são inseridos automaticamente, e outro para digitar um valor formatado, digitando um valor decimal, separado por vírgula, que será transformado em um número formatado com zeros á esquerda e sem a vírgula.

Abaixo o código fonte utilizado na planilha com os devidos comentários

'O evento Worksheet_Change é disparado quando há uma alteração em qualquer dado da planilha
Private Sub Worksheet_Change(ByVal Target As Range)
    'Este comando envia para o comando Sair: ao final desta sub a execução do processo
    'Evitando desta forma que a verificação dos eventos
    'continue desativada caso ocorra algum erro.
    On Error GoTo Sair

    'Desabilita a escuta de eventos para que não entre em loop ao alterar a célula
    Application.EnableEvents = False

    'Em Target.Row identifica se é a linha é maior ou igual a segunda linha
    'Em Target.Column identifica se a coluna é a correta a ser formatada
    If Target.Row >= 2 And Target.Column = 1 Then
        'A função CStr converte qualquer valor em texto
        'A função Len conta o número de caracteres de uma cadeia de caracteres
        'A função String repete um determinado número X vezes,
        'no caso 3 menos o número de caracteres digitados
        'O + nesta função realiza a concatenção dos zeros e do valor digitado
        Target.Value = CStr(String(3 - Len(Target.Value), "0")) + CStr(Target.Value)
    End If

    'Neste bloco de código é realizada a mesma verificação,
    'apenas com tratamento diferente dos dados
    If Target.Row >= 2 And Target.Column = 2 Then
        'Multiplica o valor por 100 para excluir a vírgula
        Target.Value = Target.Value * 100
        'Formata o valor com 15 digitos no total.
        Target.Value = CStr(String(15 - Len(Target.Value), "0")) + CStr(Target.Value)
    End If

Sair:
    Application.EnableEvents = True
End Sub
Baixe a planilha

Abraço

Marcos Rieper


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel