Por que no funciona mi código vba

Estoy haciendo un macro en excel, pero no se por que no me entra al if y me manda mes =empty y sema=0

Quiero por así decirlo generar un rango personalizado de fechas según una fecha cpaturada en un dTpicker

Sub semanas()

fechaInicial1 = CDate("12/27/2014")
fechafinal1 = CDate("01/24/2015")
fecha = Format(DTPFechaFalla, "dd/mm/yyyy")
If fecha >= fechaInicial1 Then
sema = "1" And mes = "1"

end if

end sub

2 Respuestas

Respuesta

Te recomiendo que hagas un "paso a paso" y vayas viendo luego de cada asignación de variables que valor va tomando porque estoy casi seguro que el problema lo tenés en que los valores se están interpretando mal y no es lo que vos esperás que haga.

Gracias, lo que sucede es que ya hice eso, pero tengo la duda si la manera en que estoy tratando las fechas esta bien o mal, por que según yo si las compara correctamente, pero no entra en el IF

Pero que valor va teniendo cada variable porque si el valor de la variable "fecha" es menor al valor de la variable fechaInicial1, entonces está bien que NO entre al IF

Igualmente creo que hay un error en la instrucción

sema = "1" And mes = "1"

Pues así como está escrito, eso devuelve un booleano (resultado del AND) que no lo asigna a ninguna variable por lo que creo que no tiene sentido, probablemente lo que quieras poner debería ser algo como

sema = 1

mes = 1

El tema esta así, no se si me explico correctamente

Yo tengo un calendario que por decirlo el periodo 1 empieza el día 27/12/14 al día 23/01/15, si la fecha del dtpicker esta en ese rango que la variable tome valor de 1 si la fecha es del 24/01/2015 al 27/02/2015 es el perido 2

Si es lo que entendí ahora, vos lo que necesitás no es solo que verifique por la condición <=, sino que debe validar que esté dentro del rango, si es así el código debería ser más o menos

Sub semanas()

fechaInicial1 = CDate("12/27/2014")
fechafinal1 = CDate("01/24/2015")
fecha = Format(DTPFechaFalla, "dd/mm/yyyy")
If fecha >= fechaInicial1 AND fecha <= fechafinal1 Then
   sema = 1

   mes = 1

Else

   sema = 1

   mes = 2

end if

end sub

O algo así... igualmente creo que esto no te va a corregir el error, lo que te recomiendo es que pongas un Break en la instrucción If y veas que valor tiene cada una de las variables (en la ventana de Inspección, por ejemplo podrías poner algo como

¿

? Fecha, fechainicial1, fechafinal1

Para ver que valor tiene cada una de las variables antes de ejecutar el IF

Si de hecho si tenia el codigo algo asi , y las variables toman el valor correcto que yo esperaba pero no entra en la condicion verdadera del if aunque yo veo que las fechas y la logica si coinciden , no sé si el formato de la fecha afecte ala comparacion

El formato no afecta pero depende que todas esten creadas del mismo tipo. Por las dudas defini todas las varoables del tipo Date

Respuesta

Prueba así:

Sub semanas()
    fechaInicial1 = CDate("12/27/2014")
    fechafinal1 = CDate("01/24/2015")
    '
    If DTPFechaFalla >= fechaInicial1 Then
        sema = "1" And mes = "1"
    End If
End Sub

El dtpicker es una fecha, no tiens que pasarlo a una variable, entonces ya puedes comparar fechainical1 (que ya es una fecha) el dtpicker (que también es una fecha)


Saludos. Dante Amor
No olvides valorar la respuesta.

Gracias, si ya intente eso, pero igual me manda al falso del if, ya valide las variables y son correctas con la lógica, pero no se si el formato de la fecha afecte algo

Hice la prueba con dtpicker de un formulario y sí me funciona.

¿En dónde tienes tu dtpicker?

O envíame tu archivo y lo reviso.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas