FUNCAO PARA CALCULO DE HORAS
Boa tarde pessoal,
Necessito de uma função que ao digitar a hora, verifica se a hora digitada não ultrapasse os 60 minutos, se ultrapassar, a hora será acrescida.
Obrigado,
Necessito de uma função que ao digitar a hora, verifica se a hora digitada não ultrapasse os 60 minutos, se ultrapassar, a hora será acrescida.
Obrigado,
Explique melhor qual a regra que vc quer implementar.
A hora digitada será comparada com o quê?
A hora digitada será comparada com o quê?
Ricart - tenho um MaskEdit no formato HH:MM, quando o operador digitar uma determinada hora, a função deverá verificar se os minutos é menor que 60, se for, tudo bem, mas se não for deverá incrementar este mask com a hora exata.
Ex:
hora digitada: 12:65
hora correta: 13:05
Ex:
hora digitada: 12:65
hora correta: 13:05
Boa tarde amigo... acho que isto aqui vai te ajudar... passa como parâmetro para esta função uma string ex: (15:30)
Public Function ValidaHora(Hora As String) As Boolean
[ô] quebra a string em dois digitos de hora e dois de minuto
str_Hora = Mid$(Hora, 1, 2)
str_Minuto = Mid$(Hora, 4, 2)
[ô] testa pra ver se vai vir alguma coisa fora do formato normal... faltando um digito por exemplo (15:0)
If Len(Hora) <> 5 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se a hora for maior que 23 esta errado... só vai até 23:59, depois é 00:00
If CInt(str_Hora) > 23 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se o minuto for maior que 59 tambem não passa...
If CInt(str_Minuto) > 59 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se a hora for menor ou igual a 23 e o minuto menor ou igual a 59 então validahora = true
ValidaHora = True
End Function
podes testar mandando direto o valor de um ActiveText por exemplo... formatado com com TextMask = TimeMask
EX: If ValidaHora(ActHor.Text) = False Then
Qualquer coisa podes prender o grito... dentro do possÃvel estarei as ordens para ajudar.
Abraço
Public Function ValidaHora(Hora As String) As Boolean
[ô] quebra a string em dois digitos de hora e dois de minuto
str_Hora = Mid$(Hora, 1, 2)
str_Minuto = Mid$(Hora, 4, 2)
[ô] testa pra ver se vai vir alguma coisa fora do formato normal... faltando um digito por exemplo (15:0)
If Len(Hora) <> 5 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se a hora for maior que 23 esta errado... só vai até 23:59, depois é 00:00
If CInt(str_Hora) > 23 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se o minuto for maior que 59 tambem não passa...
If CInt(str_Minuto) > 59 Then
MsgBox [Ô]Hora inválida! [Ô], vbCritical, [Ô]AVISO[Ô]
ValidaHora = False
Exit Function
End If
[ô] se a hora for menor ou igual a 23 e o minuto menor ou igual a 59 então validahora = true
ValidaHora = True
End Function
podes testar mandando direto o valor de um ActiveText por exemplo... formatado com com TextMask = TimeMask
EX: If ValidaHora(ActHor.Text) = False Then
Qualquer coisa podes prender o grito... dentro do possÃvel estarei as ordens para ajudar.
Abraço
Bom, criei a função exatamente como você pediu
Para usar, coloca no lostFocus da msk
Function Horas(MyHoras As String) As String
Dim vHora As String, vMin As String
vHora = Mid(MyHoras, 1, 2)
vMin = Mid(MyHoras, 4, 5)
If vMin > 59 Then
vMin = Val(vMin) - 60
vHora = Val(vHora) + 1
End If
Horas = Format(vHora & [Ô]:[Ô] & vMin, [Ô]hh:mm[Ô])
End Function
Para usar, coloca no lostFocus da msk
Private Sub Msk_LostFocus()
Msk.Text = Horas(Msk.Text)
End Sub
Robiu - vc acertou no alvo, é isto que eu queria - mt obrigado
Tópico encerrado , respostas não são mais permitidas