19. december 2003 - 10:49
#1
Her en function lavat af en fra Portugal:
Function IsTime(Valor)
Dim Aux
Dim h
Dim m
Dim s
Aux=False
Pos=InStr(Valor,":")
Aux=(len(valor)<=8 and len(valor)>=3) And ((Pos=2 or Pos=3)) 'Verifica-se se o tamanho e o separador (:) estao bem
h=Mid(Valor,1,Pos-1)
If IsNumeric(h) Then 'Captura-se a Hora
h=Cint(h)
Aux=(h>=0 And h<=23) 'Verifica-se se esta no intervalo correcto
End if
Valor=Mid(Valor,Pos+1,Len(Valor)-Pos+1) 'Fica-se com os minutos e segundos
Pos=InStr(Valor,":")
Aux=(len(valor)<=5 and len(valor)>=1) 'Verifica-se se o tamanho e o separador (:) estao bem
If Pos=0 Then
m=Mid(Valor,1,Len(Valor))
Else
m=Mid(Valor,1,Pos-1)
End if
If IsNumeric(m) Then 'Captura-se os minutos
m=Cint(m)
Aux=(m>=0 And m<=59) 'Verifica-se se esta no intervalo correcto
Else
Aux=False
End if
Pos=InStr(Valor,":")
Valor=Mid(Valor,Pos+1,Len(Valor)-Pos+1) 'Fica-se com os segundos
If Pos>0 Then 'Entao, ainda ha os segundos para verificar....
Pos=InStr(Valor,":")
Aux=(len(valor)<=2) 'Verifica-se se o tamanho e o separador (:) estao bem
If Pos=0 Then
s=Mid(Valor,1,Len(Valor))
Else
s=Mid(Valor,1,Pos-1)
End if
If IsNumeric(s) Then 'Captura-se os minutos
s=Cint(s)
Aux=(s>=0 And s<=59) 'Verifica-se se esta no intervalo correcto
Else
Aux=False
End if
Else
s=0
End if
IsTime=Aux
'Esta linha e' opcional e apenas serve para reconverter o valor para o formato desejado. GetCTime devera ser Global
If aux Then GetCTime=h & ":" & m & ":" & s
End Function
19. december 2003 - 10:51
#2
Her er så en simplere metode som bruger isDate til at validere tiden:
Den bruger isDate med Date & " " & tjekTid, da isDate kan tjekke om dato+tid er valid men ikke kun tid:
Function IsTime(tjekTid)
IsTime = IsDate(Date & " " & tjekTid)
End Function