1
resposta

[Dúvida] Código de VBA deixa o valor de data um pouco quebrado.

Olá, bom dia.

Gostaria de pedir uma ajuda quanto ao vídeo 2 aula 4 do curso VBA: fazendo um cadastro personalizado.

Quando insiro o valor data , mesmo que a coluna de data não esteja formatada no estilo norte-americano, ele é registrado nesse formato. Apenas quando uso número na parte dia maiores que 12 que ele funciona.

Segue uma imagem de quando tentei inserir o valor 01/12/2024.

Não sei onde me perdi. Insira aqui a descrição dessa imagem para ajudar na acessibilidadeCódigo:

' Para utilizar as teclas corretamente no código, precisamos nos referir aos códigos ASCII e aos códigos de tecla (KeyCode) disponíveis na tabela do Visual Basic. ' Esses códigos nos ajudam a identificar qual tecla foi pressionada e a realizar as ações apropriadas no nosso formulário.

Private Sub tbData_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    'Verifica as teclas de 1 a 9 no teclado alfanumérico
    If KeyCode >= vbKey0 And KeyCode <= vbKey9 Then
        
        'Caso o comprimento da data seja 2 ou 5, adiciona as barras
        If Len(Trim(Me.ActiveControl)) = 2 Or Len(Trim(Me.ActiveControl)) = 5 Then
            Me.ActiveControl = Trim(Me.ActiveControl) & "/"
        End If

    'Verifica as teclas de 1 a 9 no teclado numérico
    ElseIf KeyCode >= vbKeyNumpad0 And KeyCode <= vbKeyNumpad9 Then
        
        'Caso o comprimento da data seja 2 ou 5, adiciona as barras
        If Len(Trim(Me.ActiveControl)) = 2 Or Len(Trim(Me.ActiveControl)) = 5 Then
            Me.ActiveControl = Trim(Me.ActiveControl) & "/"
        End If

    'Deixa pronto o tratamento para a tecla "delete" e libera seu uso
    ElseIf KeyCode = vbKeyDelete Then

    'Deixa pronto o tratamento para a tecla "backspace" e libera seu uso
    ElseIf KeyCode = vbKeyBack Then

    'Caso não seja nenhum dos casos acima, cancela a digitação
    Else
        KeyCode = vbKeyCancel
    End If

End Sub
1 resposta

Boa tarde Miguel! Tudo bem com você?

Isso geralmente ocorre devido à configuração regional do Excel ou do sistema operacional, que pode estar interpretando a data no formato MM/DD/AAAA (mês/dia/ano) em vez de DD/MM/AAAA (dia/mês/ano - formato que estamos acostumados).

Para corrigir, formate a coluna de data explicitamente para o formato DD/MM/AAAA. Selecione a coluna G, escolha "Formato de Número" e selecione "Mais formatos de números" e escolha o campo de data mais adequado, como mostro a seguir:

Janela de diálogo do Excel exibindo as opções de formatação de células, com destaque para a aba "Número" e a lista de formatos de data disponíveis, permitindo ao usuário personalizar a exibição de datas e horas nas células.

Mas não se preocupe! Na próxima aula, o instrutor irá adicionar uma funcionalidade ao código para exibir automaticamente o campo de data e hora utilizando o método NOW. Isso permitirá que o campo seja preenchido de forma automática, eliminando a necessidade de entrada manual por parte do usuário.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado