none
Erro no formato horas RRS feed

  • Pergunta

  • Boa noite

    Uso o código abaixo para retornar a hora no formato 24 horas em um textbox, porem se digitar por exemplo: 24:30 o código aceita e gera um erro quando gravo.

    como evitar que se digite hora maior que 23:59.

    Private Sub TxtHoras1_Enter() 
     TxtHoras1.BackColor = &HFFFF& 
    End Sub
    
    Private Sub TxtHoras1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     TxtHoras1.BackColor = vbWhite
     Label17.BackColor = &HC0C0C0: Label17.ForeColor = &H0&
     TxtHoras1 = Format(TxtHoras1, "hh:mm")
    End Sub
    
    Private Sub TxtHoras1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     TxtHoras1.MaxLength = 5
      Select Case KeyAscii
       Case 8, 48 To 57 ' BackSpace e numericos
        If Len(TxtHoras1) = 2 Then TxtHoras1.Text = TxtHoras1.Text & ":"
        Me.TxtHoras1.SelStart = VBA.Len(Me.TxtHoras1.Value)
        'End If
        Case Else ' o resto é travado
        KeyAscii = 0
      End Select
    End Sub
    Obrigado a todos.

    sábado, 18 de novembro de 2017 00:00

Respostas

Todas as Respostas

  • Option Explicit
    
    Sub teste()
    
    Dim hr As Date
    
    On Error GoTo fim
    hr = "24:30"
    
    Exit Sub
    
    fim:
    MsgBox "Digite uma hora válida."
    
    End Sub
    


    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Sugerido como Resposta AndersonFDiniz2 sábado, 18 de novembro de 2017 01:42
    sábado, 18 de novembro de 2017 01:41
  • Isso é chamado de tratamento de erro. Quando a aplicação vai ser usada por outra pessoa, é necessário fazer a prevenção de erros. 

    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com


    sábado, 18 de novembro de 2017 11:01
  • https://www.youtube.com/results?search_query=vba+tratamento+de+erro

    A MELHOR FORMA DE AGRADECER E VOTAR COMO UTIL OU MARCAR COMO RESPOSTA Anderson Diniz diniabr2011@gmail.com

    • Marcado como Resposta JLNunes sábado, 18 de novembro de 2017 16:06
    sábado, 18 de novembro de 2017 13:39
  • Boa tarde

    resolvi sem precisar o tratamento de erro.

    Private Sub TxtHoras1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
     TxtHoras1.BackColor = vbWhite
     Label17.BackColor = &HC0C0C0: Label17.ForeColor = &H0&
     Dim cc: Dim aa: Dim bb
     aa = Left(TxtHoras1, 2)
     bb = Right(TxtHoras1, 3)
     If aa = "24" Then
      aa = "00": cc = aa + bb
      TxtHoras1 = Format(cc, "hh:mm")
     Else
      TxtHoras1 = Format(TxtHoras1, "hh:mm")
     End If
    End Sub
    Obrigado pela atenção.

    sábado, 18 de novembro de 2017 16:06