** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Recorrer Meses
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoRecorrer Meses

 Responder Responder
Autor
Mensaje
Jaime Andrés Endo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2018
Localización: Cali - Colombia
Estado: Sin conexión
Puntos: 12
Enlace directo a este mensaje Tema: Recorrer Meses
    Enviado: 15/Junio/2018 a las 18:47
Hola a todos, buenos días,

En estos momentos estoy haciendo un programa, y me tope con un problema, al momento de ingresar una fecha inicial y una fecha final, el programa debería de ubicarme los datos en el año y mes correspondiente, la cuestión es que cuando ingreso un determinado año con su respectivo mes, el programa no me imprime el dato correctamente, sin más preámbulos dejo el código para su mejor comprensión. 

Private Sub Boton_Aceptar_Datos_Click()

Dim X, K As Integer

X = Val(Year(Fecha_Inicial.Text))
J = DateDiff("m", Fecha_Inicial.Text, Fecha_Final.Text)
Y = Val(Year(Fecha_Final.Text))
A = Val(Month(Fecha_Inicial.Text))

For K = 3 To Y
    If X = ActiveSheet.Cells(3, K) Then
    MsgBox ("ActiveSheet.Cells(3, K) = " & ActiveSheet.Cells(3, K))
        For G = 3 To J + K + 2
            If A = ActiveSheet.Cells(4, G) Then
                For N = G To J + G
                    ActiveSheet.Cells(6, N) = "Hola Carol"
                Next N
            End If
        Next
    End If
    K = K + 11
Next

End Sub
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 996
Enlace directo a este mensaje Enviado: 15/Junio/2018 a las 20:09
¿ActiveSheet? Eso parece VBA para Excel, no VB clásico. Lo digo, porque si es así, puedes solicitar que muevan el hilo al foro de Excel, donde posiblemente te podrán responder mejor.

Por otro lado, variables como X, J o K son muy rápidas de escribir, pero con esos nombres, dentro de unos meses no recordarás para que servían.

Y para recorrer de mes en mes entre 2 fechas, recuerda que a partir del mes 12 hay que cambiar de año:

Public Function RecorrerMeses(Inicio As Date, Fin As Date)
    Dim Mes As Integer
    Dim Anio As Integer
    Dim FormatoInicio As Long
    Dim FormatoFin As Long
   
    Mes = Month(Inicio)
    Anio = Year(Inicio)
    FormatoInicio = CLng(Format$(Anio, "0000") & Format$(Mes, "00"))
    FormatoFin = CLng(Format$(Fin, "yyyy") & Format$(Fin, "mm"))
    Debug.Print "Año y mes: " & FormatoInicio
   
    Do While FormatoFin > FormatoInicio
        Mes = Mes + 1
        If Mes > 12 Then
            Anio = Anio + 1
            Mes = 1
        End If
       
        FormatoInicio = CLng(Format$(Anio, "00") & Format$(Mes, "00"))
        Debug.Print "Año y mes: " & FormatoInicio
    Loop
End Function


Editado por pitxiku - 15/Junio/2018 a las 20:10
Arriba
Jaime Andrés Endo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2018
Localización: Cali - Colombia
Estado: Sin conexión
Puntos: 12
Enlace directo a este mensaje Enviado: 15/Junio/2018 a las 20:19
Hola, gracias por responder, en efecto, si, es Visual Basic para aplicaciones (Excel), soy nuevo aquí, podría preguntarte cómo hago esa solicitud? La de mover este hilo
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5440
Enlace directo a este mensaje Enviado: 16/Junio/2018 a las 21:30

Hola Jaime Andrés.


- Tienes variables no declaradas:  J, Y, A, G, N

- Si  el año final es  2018, ... ¿El bucle K recorre desde 3 hasta 2018?

- ¿En la fila 3 de tu hoja tienes años o fechas?

- ... ¿?

- Creo que más que estudiar tu código, será mejor que tú expliques que datos tienes en tu hoja  (y en que rango), que datos contienen: Fecha_Inicial y Fecha_Final, y lo que quieres obtener al hacer clic en el botón Aceptar.





Editado por AnSanVal - 16/Junio/2018 a las 21:33
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
Jaime Andrés Endo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2018
Localización: Cali - Colombia
Estado: Sin conexión
Puntos: 12
Enlace directo a este mensaje Enviado: 18/Junio/2018 a las 15:06
Hola, buenos Días, gracias por responder,

Claro que si, mira,

Primero, tengo esta tabla hecha, con el botón de "IMPRIMIR MESES",



En el botón de "IMPRIMIR DATOS" es donde yo agrego el año inicial y el año final con sus respectivos meses, para que al darle el botón de "ACEPTAR" me imprima en la celda correspondiente, es decir, si le doy un ejemplo, desde el 5 de Marzo del 2015 hasta el 4 de Septiembre del 2015, simplemente me imprima los datos en ese rango, como me muestra la siguiente imagen... (El día del mes no es importante, solo el mes y el año).



Todo bien y perfecto hasta ahí, ahora viene lo que se me dificulta hasta el momento.

Cuando le doy en un año diferente, es decir, un ejemplo, desde el 5 de Marzo del 2016 hasta el 4 de Septiembre del 2016, me pasa lo siguiente.....

(Espero puedan ver bien la imagen, tuve que alejarla un poco para que se viera completo lo que les quiero decir)



Mi problema es ese, cómo hago para que solo me imprima los datos del año que ingreso, como pueden ver, ingrese el año 2016 y al darle click en "ACEPTAR", me imprime los datos también en el año 2015, lo que no debería pasar, lo mismo sería si le doy en el año 2017, me imprimirá en el 2015 y 2016,

Esa es mi duda e inquietud, muchas gracias por la atención.

Saludos

PD: Dejo el link del programa por MediaFire
(Espero se pueda subir links)



Editado por Jaime Andrés Endo - 18/Junio/2018 a las 15:38
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5440
Enlace directo a este mensaje Enviado: 18/Junio/2018 a las 20:44
Prueba si te resuelve esto:

 Private Sub Boton_Aceptar_Datos_Click()
  Dim añoIn&, AñoFin&, mesIn&, mesFin&, cambia&, col&

'Columna anterior al comienzo de año (inicio y fin).
  añoIn = (Year(Fecha_Inicial.Text) - 2014) * 12 - 10
  AñoFin = (Year(Fecha_Final.Text) - 2014) * 12 - 10
'Número de mes dentro del año (inicio y fin).
  mesIn = añoIn + Month(Fecha_Inicial.Text)
  mesFin = AñoFin + Month(Fecha_Final.Text)
 
'Ordena fechas (si están invertidas).
  If mesIn > mesFin Then
    cambia = mesIn
    mesIn = mesFin
    mesFin = cambia
  End If
 
'Bucle de escritura en celdas.
  For col = mesIn To mesFin
    Cells(6, col).Value = "Prueba"
  Next col

  Fecha_Inicial = ""
  Fecha_Final = ""

End Sub


Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
Jaime Andrés Endo Ver desplegable
Nuevo
Nuevo


Unido: 15/Junio/2018
Localización: Cali - Colombia
Estado: Sin conexión
Puntos: 12
Enlace directo a este mensaje Enviado: 18/Junio/2018 a las 20:50
Está Perfecto, muchas gracias, me sirvió muy bien
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5440
Enlace directo a este mensaje Enviado: 18/Junio/2018 a las 23:02
Gracias también a ti por la retroalimentación, vuelve cuando quieras.
Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable