
Comparar horas en vba (celda y UserForm)
Publicado por Alx (31 intervenciones) el 27/03/2016 22:19:04
Socorro otra vez (soy novato con vba)
Tengo un UserForm donde introduzco una hora, y la comparo con una columna de celdas
No logro que entre en el bucle...
v_inicio es una hora introducida en un TextBox definida como Date
lo que hago es recorrer toda una columna (con formato de hora), y cuando encuentre la coincidencia que haga el resto (rellenar otras celdas)
He probado con CDate, a convertirlo con Time... y nada.
Donde estoy metiendo la pata?
Justo antes del "if Cells", he puesto un MsgBox para que me muestre el contenido, y tanto la celda como v_inicio, coinciden, al menos visualmente, pero por alguna razon, la comparacion es erronea.
Añado el codigo completo (lo demas funciona bien, aunque acepto sugerencias que seguro que es mejorable)
Tengo un UserForm donde introduzco una hora, y la comparo con una columna de celdas
No logro que entre en el bucle...
v_inicio es una hora introducida en un TextBox definida como Date
lo que hago es recorrer toda una columna (con formato de hora), y cuando encuentre la coincidencia que haga el resto (rellenar otras celdas)
He probado con CDate, a convertirlo con Time... y nada.
Donde estoy metiendo la pata?
1
2
3
4
5
6
7
8
9
10
11
12
For x = 4 To 1444
If Cells(x, 8).Value = v_inicio Then
' MsgBox "fila " & x & " columna " & columna
For y = x To v_duracion
Cells(y, columna).Value = 1
Next y
End If
Next x
Justo antes del "if Cells", he puesto un MsgBox para que me muestre el contenido, y tanto la celda como v_inicio, coinciden, al menos visualmente, pero por alguna razon, la comparacion es erronea.
Añado el codigo completo (lo demas funciona bien, aunque acepto sugerencias que seguro que es mejorable)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Dim fila As Long
Dim v_fecha As Date
Dim v_duracion As Date
Dim v_fin As Date
Dim v_inicio As Date
Private Sub Cb_aceptar_Click()
'Obtener la fila disponible
fila = Application.WorksheetFunction.CountA(Range("B:B")) + 4
'Insertar datos capturados
Cells(fila, 2).Value = CDate(v_fecha)
Cells(fila, 3).Value = UserForm1.f_inicio.Value
Cells(fila, 4).Value = UserForm1.f_fin.Value
Cells(fila, 5).Value = UserForm1.f_duracion.Value
'Limpiar cajas de texto
UserForm1.f_fecha.Value = ""
UserForm1.f_inicio.Value = ""
UserForm1.f_fin.Value = ""
UserForm1.f_duracion.Value = ""
'El mogollon
columna = Application.WorksheetFunction.CountA(Range("L2:BB2")) + 11
For x = 4 To 1444
If Cells(x, 8).Value = v_inicio Then
' MsgBox "fila " & x & " columna " & columna
For y = x To v_duracion
Cells(y, columna).Value = 1
Next y
End If
Next x
End Sub
Private Sub Cb_cancelar_Click()
Unload Me
End Sub
Private Sub f_fecha_Enter()
v_fecha = Format(Now, "dd/mm/yy")
UserForm1.f_fecha.Value = v_fecha
End Sub
Private Sub f_fin_AfterUpdate()
v_inicio = UserForm1.f_inicio.Value
v_fin = UserForm1.f_fin.Value
v_duracion = v_fin - v_inicio
UserForm1.f_duracion.Value = v_duracion
End Sub
Valora esta pregunta


0