
06/08/2005, 08:25
|
 | Moderador | | Fecha de Ingreso: abril-2005 Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 20 años Puntos: 839 | |
Cita:
Iniciado por emilio21 hola amigos....
estoy haciendo una aplicacion donde tengo que añadir fechas a un listbox que pueden ser ingresadas por el usuario o que la aplicacion lo haga aleatoriamente. mi problema es el siguiente, yo quiero que cuando la fecha se genere aleatoriamente se haga de acuerdo a como la quiera el usuario, me explico, si el quiere que la fecha sea entre 06:00 hasta las 10:00 por ejemplo, y que en el listbox se ordenen las fechas desde las 00:00 hasta las 23:59, demas quiero que cuando se randomize las fechas no se repitan en el listbox, ok?
gracias Fechas u Horas????????
Si son Horas hice un código así:
Código:
Function IsTime(ByVal Texto As String) As Boolean
Dim Hora As String
Dim Min As String
If Len(Texto) <> 5 Then
Exit Function
End If
Hora = Left$(Texto, 2)
Min = Right$(Texto, 2)
If Not IsNumeric(Hora) Or Not IsNumeric(Min) Then
Exit Function
End If
If CInt(Hora) > 23 Or CInt(Hora) < 0 Or CInt(Min) > 59 Or CInt(Min) < 0 Then
Exit Function
End If
IsTime = True
End Function
Private Sub Command1_Click()
Hora1$ = InputBox("Ingresa Hora Inicial", "Lista")
Hora2$ = InputBox("Ingresa Hora Final", "Lista")
If Not IsTime(Hora1$) Or Not IsTime(Hora2$) Then
MsgBox "Hora no Válida", vbCritical, "Lista"
End If
a = HoraAleatoria(Hora1$, Hora2$)
List1.AddItem a
End Sub
Function HoraAleatoria(ByVal HoraInicial As String, ByVal HoraFinal As String) As String
If MinutosConvert(HoraInicial) >= MinutosConvert(HoraFinal) Then Exit Function
Max = MinutosConvert(HoraFinal) - MinutosConvert(HoraInicial)
Do
Randomize
Minutos = MinutosConvert(HoraInicial) + Int(Rnd * Max)
HoraA = TimeConvert(Minutos)
If FindListIndex(HoraA) = 0 Then
HoraAleatoria = HoraA
Exit Do
End If
Loop
End Function
Function FindListIndex(ByVal Texto As String) As Integer
For I = 0 To List1.ListCount - 1
Buscar = List1.List(I)
If Buscar = Texto Then
FindListIndex = I
Exit Function
End If
Next I
End Function
Function MinutosConvert(ByVal Texto As String) As Integer
Dim Hora As String
Dim Min As String
Hora = Left$(Texto, 2)
Min = Right$(Texto, 2)
MinutosConvert = (CInt(Hora) * 60) + CInt(Min)
End Function
Function TimeConvert(ByVal Minutos As Integer) As String
Hora = CStr(Minutos \ 60)
Minuto = CStr(Minutos - (CInt(Hora) * 60))
TimeConvert = Format$(Hora, "00") & ":" & Format$(Minuto, "00")
End Function
Es algo larguito, por eso, si alguno de ustedes tiene alguna forma mejor, sería bienvenido |