Formatação Automática de Hora no Excel

Caminho do Arquivo
ABRIR ARQUIVO TEXTO COM MAIS DE 1 MILHÃO DE LINHAS NO EXCEL
1 de agosto de 2010
Último dia do mês
Função no Excel Retornar o Último Dia do Mês com VBA
3 de agosto de 2010

Formatar data

A formatação de horas no Excel na sua digitação deve ser sempre feita utilizando “:” para separar os campos de hora e minuto 23:45.

Com esta função que adaptei para ficar mais rápida do livro VBA e Macros para Microsoft Office Excel 2007 você pode digitar os valores diretamente na célula, sem a necessidade de digitar os “:” o que torna o seu trabalho muito mais rápido.

Para isso você deve inserir o procedimento abaixo clicando no objeto do VBA diretamente na planilha que quer inserir a formatação conforme a figura.

Formatar dataFormatar hora – Clique para ampliar

Veja a seguir a função:

'No evento on Change é passada a posição que está sendo alterada
Private Sub Worksheet_Change(ByVal Target As Range)
'Se a coluna do endereço for "A" e o valor for maior que 1 aplica a formatação
    If Target.Column = 1 And Target.Value > 1 Then
        'Desliga a chamada do evento para que não fique recursiva a função
        Application.EnableEvents = False
        'Realiza a formatação da hora
        Target.Value = Left(Target.Value, 2) & ":" & Right(Target.Value, 2)
        'Liga novamente a chamada do evento para que volte a funcionar
        Application.EnableEvents = True
    End If
End Sub

Com esta alteração o sistema quando for digitado na coluna “A” um valor como 2345 ele irá inserir automaticamente os “:” e ficará 23:45.

Obrigado pela visita ao blog, deixe suas impressões, dúvidas e sugestões para fazermos ele cada vez melhor.

Abraço

Marcos Rieper

7 Comments

  1. Adalberto disse:

    Vcs estão de parabéns!
    Muito bons os artigos públicados. Como eu estou ainda aprendendo, este blog esta sendo excelente, com exemplos bem explicados e ótimas planilhas prontas, facilitando assim o meu aprendizado.
    Continuem assim.

    Abraços

  2. Gilberto disse:

    Amigo, baixei o arquivo e vi que faz o que eu penso; mas no caso eu tenho uma planilha com mais de uma coluna que envolve campos com horas e vi uma planilha de uma desenvolvedor; que ele simplesmente faz a tecla “,” do bloco numérico passar a ser reconhecida como “:” posso enviar-lhe esse arquivo para voce ver? Pois dessa forma seria muito útil para meus trabalhos. Desde já Obrigado pela atenção

  3. Eduardo disse:

    Marcos,

    Percebi que se os valores forem menor que 10hs a planilha a macro retorna diferente, por exemplo
    0100, ele coloca 10:00

  4. thiago disse:

    quando aperto o delete fica “:” ou quando digito apenas 1 [00:01] fica “01:01” e apenas uma coluna?

  5. Amigos fiz uns ajustes para ajustar o problema da “hora” “01:00” e possibilitar o uso de várias colunas, espero ter ajudado vocês.

    Elisandro Ávila

    Private Sub Worksheet_Change(ByVal Target As Range)
    ‘No evento on Change é passada a posição que está sendo alterada
    ‘Se a coluna do endereço for “B” até a “G” e o valor for maior que 1 aplica a formatação
    If (Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Or Target.Column = 6 Or Target.Column = 7) And Target.Value > 1 Then
    ‘Desliga a chamada do evento para que não fique recursiva a função
    Application.EnableEvents = False
    ‘Realiza a formatação da hora
    ‘Testa a Hora para ajustar o valor quando 00:01 até 09:59
    tst = Len(Target.Value)
    If tst <= 3 Then
    hora = "0" & Target.Value
    Else
    hora = Target.Value
    End If
    Target.Value = Left(hora, 2) & ":" & Right(hora, 2)
    'Liga novamente a chamada do evento para que volte a funcionar
    Application.EnableEvents = True
    End If
    End Sub

  6. Nelson E Canal disse:

    Ola Elisandro.

    com referencia a “Com esta função que adaptei para ficar mais rápida do livro VBA e Macros para Microsoft Office Excel 2007”

    nos ajustes que vc efetuou em 02/05/2015, quando vc deleta as datas lançadas dentro das colunas com a mascara do formato, apresenta um erro
    isto e abre msgbox (visual basic) com a seguinte mensagem ( Erro em tempo de execução “’13”) – Tipos incompativeis.
    Tem como impedir que este erro não interfira na execução da função? Poderias acrescer este na função que vc já desenvolveu?..
    Grato
    Nelson

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.