Macro de calendario automático explicado

Última actualización el 01/03/2025
Tiempo de lectura: 4 minutos

El artículo sobre la creación de calendario automático es uno de los artículos más leídos en este sitio, y también es el más comentado, particularmente por la macro que te está causando problemas.

Este artículo le explicará cada línea del código. Esto le permitirá comprender la lógica y adaptar el código a sus necesidades. Si nunca has creado una macro, es fundamental conocer los conceptos básicos de programación en este artículo.

Aquí está el código utilizado en el calendario para ocultar los días.

Si quieres un calendario que registra datos de mes a mes, Volver a este artículo o descargar el archivo.

Línea 1: Crear el nombre del procedimiento

Este es el nombre que identificará de forma única el procedimiento. También es gracias a este nombre que podemos enlazar menú desplegable a macro.

Línea 2: Declaración de variables

Para escanear varias columnas para leer la fecha que contienen, necesitamos usar una variable. la variable Num_Col se declara (Dim) para ser un número entero (As Long)

Línea 3: Inicio del bucle

Vamos a escribir un bucle que variará la variable. Num_Col desde el valor 30 y termina en el valor 32

La razón es porque en la construcción de nuestro calendario los días 29, 30 y 31 siempre se calcularán en las columnas 30, 31 y 32.

Fechas calculadas para las columnas 30, 31 y 32

Línea 4: Prueba entre el mes calculado y el mes seleccionado

El truco completo del macro calendario está aquí 😮👍

Como sabes, todos los meses tienen 28 días, pero el mes de febrero puede tener 29 días cada 4 años y 4 meses tienen 30 días (abril, junio, septiembre, noviembre).

Presentado así, el problema parece complicado de resolver. Pero por otro lado, Excel siempre sabe adaptar las fechas si ya ha pasado final de mes. Por ejemplo, si sumamos 30 días el 1 de febrero, Excel devolverá la fecha del 3 de marzo.

=DATE(2019;2;1)+30 => 03/03/2019

Entonces, en nuestro calendario, si elegimos el mes de febrero, las columnas 30, 31 y 32 mostrarán las fechas del mes de marzo.

Fechas calculadas por Excel para los días 29, 30 y 31 de febrero

Por lo tanto, escribiremos una prueba que comparará el valor del mes (Month) en las columnas 30, 31 y 32 con el mes devuelto por el menú desplegable.

Cambiar el valor de la celda vinculada según el mes seleccionado

Por lo tanto, la prueba buscará si el valor del mes contenido en las celdas AD6, AE6 y AF6. O Cells(6, 30), Cells(6, 31) et Cells(6,32) son mayores o iguales al valor contenido en A1 (la celda vinculada del menú desplegable durante meses).

Por supuesto, como estamos dentro de un bucle, el valor Num_Col primero tendrá el valor 30 y por lo tanto hará la prueba en la celda AD6, luego en el segundo paso por el bucle, la prueba se hará en la celda AE6 y así sucesivamente.

Línea 5: Ocultar columna

Si la prueba anterior es verdadera, la columna Num_Col Está oculto (Hidden = True Ocultar = Verdadero).

Línea 6 y 7: Mostrar columna

Si la prueba es falsa (Else), luego la columna Num_Col se visualiza (Hidden = False)

Esta prueba puede parecer inútil pero si pasas de un mes que no tiene 31 días a un mes con 31 días, debes mostrar las columnas ocultas anteriores (inteligente)

Línea 8 y 9: Cerrar instrucciones

En VBA, cuando creas una prueba o un bucle, es fundamental indicar dónde terminan las instrucciones. Para indicar el final de una prueba. If, solo escribe la instrucción End If, y para un bucle For, debe terminar con la instrucción Next

Línea 10: Borrar los datos ingresados

Al final del procesamiento para ocultar o mostrar las columnas, el programa borrará los valores. ClearContents registrado en el rango de celdas B6 a AF13 Range("B6:AF13")

Línea 11: Completa el trámite

Al igual que con las pruebas o bucles, debes finalizar un procedimiento (y por lo tanto el final de tu programa) con la instrucción End Sub

Conclusión

Como habrás notado, incluso si la macro de calendario es corta (8 líneas de código), cada línea es importante y tiene una función bien definida. Además, es importante comprender bien el código antes de realizar cualquier modificación.

Artículos relacionados

53 Comentarios

  1. Laura BARREAU
    02/09/2025 a las 10:47

    Aquí está la macro:

    Sub Hide_Day()

    Dim Num_Col mientras

    Rango("G13:AK45").Borrar contenido

    Para Num_Col = 35 a 37

    Si mes (celdas (12, Num_Col)) celdas (1, 3) entonces

    Columnas (Num_Col). Ocultas = Verdadero

    otro

    Columnas(Num_Col).Ocultas = Falso

    Si terminar

    Siguiente

    End Sub

    Mi problema es el siguiente cuando cambio de mes, pongo un ejemplo; ingreso datos en enero y cuando voy al mes de febrero y vuelvo a enero los datos han desaparecido.

    Responder

  2. Laura BARREAU
    02/09/2025 a las 10:36

    Hola, logré crear la macro y todo funciona. El problema es el siguiente:

    Por ejemplo, yo ingreso datos en el mes de enero, cuando voy a febrero y vuelvo a enero, se borran todos mis datos...

    Aquí está mi macro:

    Sub Hide_Day()
    Dim Num_Col mientras
    Rango("G13:AK45").Borrar contenido
    Para Num_Col = 35 a 37
    Si mes (celdas (12, Num_Col)) celdas (1, 3) entonces
    Columnas (Num_Col). Ocultas = Verdadero
    otro
    Columnas(Num_Col).Ocultas = Falso
    Si terminar
    Siguiente
    End Sub

    ¿Podrías ayudarme por favor?

    Responder

    • Frédéric LE GUEN
      02/09/2025 a las 13:31

      Este programa no gestiona el registro de datos. Para el registro de datos Tienes que comprar esta carpeta.

      Responder

      • Laura BARREAU
        04/09/2025 a las 09:29

        En respuesta, no podemos comprar su archivo. Me sigue decepcionando que nos ofrezcan un archivo excelente, pero no nos muestren consejos que pueden mejorar nuestra vida diaria, como el VBA que solicité.

  3. nolwenn
    20/07/2025 a las 17:41

    Hola,
    cuando uso tu código adaptándolo a mis celdas y al ejecutar la macro este colorea todo mi calendario con el color de la semana y borra los nombres de los días...
    Comentarios faire?

    Responder

  4. Ju
    15/04/2025 a las 10:08

    Hola,
    Estoy haciendo un calendario con macro como lo indicas con tus códigos, sin embargo, mis fechas están en filas y no en columnas, por lo que no funciona, existe algún código especial si las fechas están en filas?
    Si es así ¿qué es?
    gracias por regresar

    Responder

    • Frédéric LE GUEN
      15/04/2025 a las 17:02

      En el enlace a la explicaciones macro, tienes un párrafo que explica cómo transformar el código con un libro de trabajo organizado verticalmente.

      Responder

  5. El diseñador de moda Stéphane
    16/02/2025 a las 16:00

    Hola quisiera saber porque cuando abro el visual basic no veo ninguna linea de codigo como a ti?

    gracias

    Responder

    • Frédéric LE GUEN
      16/02/2025 a las 17:05

      ¿Guardaste tu macro en formato xlsm?

      Responder

  6. sam
    17/01/2025 a las 16:12

    Hola de nuevo, la idea es eliminar el contenido al pasar al mes siguiente y conservarlo al volver al mes anterior.
    ¿Cómo?

    Aquí está mi macro:
    Sub Hide_Day()
    Dim Num_Col mientras
    Rango("D7:AH14").Borrar contenido
    Para Num_Col = 32 a 34
    Si mes (celdas (6, Num_Col)) celdas (1, 3) entonces
    Columnas (Num_Col). Ocultas = Verdadero
    otro
    Columnas(Num_Col).Ocultas = Falso
    Si terminar
    Siguiente
    End Sub

    Responder

    • Frédéric LE GUEN
      21/01/2025 a las 03:25

      Hola, para ello debes adquirir el calendario automático (enlace en el artículo). El trabajo es complicado y requirió varios días de desarrollo en VBA. El código tiene varios miles de líneas para tener en cuenta todos los escenarios (agregar un empleado, eliminar un empleado, modificar un valor, eliminar un valor único, etc.)

      Responder

  7. sam
    17/01/2025 a las 16:03

    Hola,
    ¿Cómo nos aseguramos de que los datos introducidos cada mes queden registrados y no se sobrescriban? Cuando cambias de mes, los datos registrados en el mes anterior se borran, lo cual es muy restrictivo... ¿Existe alguna solución para esto? Eliminar el contenido claro no es suficiente para obtener información.
    aquí está mi macro:

    Sub Hide_Day()
    Dim Num_Col mientras
    Rango("D7:AH14").Borrar contenido
    Para Num_Col = 32 a 34
    Si mes (celdas (6, Num_Col)) celdas (1, 3) entonces
    Columnas (Num_Col). Ocultas = Verdadero
    otro
    Columnas(Num_Col).Ocultas = Falso
    Si terminar
    Siguiente
    End Sub

    Gracias de antemano por sus comentarios.

    Responder

  8. NO TAME
    01/07/2022 a las 10:57

    Muchas gracias a ti. Este tutorial resuelve una de mis dificultades en la gestión del cronometraje del personal.

    Responder

  9. JEBLI
    02/05/2022 a las 16:14

    Hola,
    Muchas gracias por tu esfuerzo y por todo lo que haces para ayudarnos.
    Te estimo mucho y te deseo felicidad en el mundo entero.
    Si me lo permiten me gustaría aprender a registrar mis datos de un mes para otro (seguimiento del tiempo del personal).
    De nuevo muchas gracias.

    Responder

  10. Souleymane Cissé
    25/04/2022 a las 15:10

    Hola, me gustaría poder cambiar el mes pero actualizando cada vez los datos que contiene cada mes sin sobrescribirlos.

    Responder

    • Frédéric LE GUEN
      26/04/2022 a las 00:45

      Debes eliminar la línea de la macro ClearContents.

      Responder

  11. Steven
    13/08/2021 a las 07:14

    Hola y gracias por el tutorial!

    ¡Necesito una mano amiga! Como muchos, mi calendario es vertical pero ese no es mi problema, adapté la macro. ¡Guardo y funciona! Excepto que cada mes tiene 28 días. Tuve que eliminar la línea que solicita la eliminación de las celdas para mis necesidades y noté que si configuro todo en FALSO y se muestra todo el día, me preguntaba si faltaba alguna línea en la macro. Tengo la impresión de que solo toma 28 días o se muestra todos los días... aquí están los códigos

    Sub Hide_Day()
    Atenuar Num_Lines mientras sea largo
    For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
    Si mes (celdas (núm_líneas, 3)) > celdas (1, 1) entonces
    Filas (Num_Lines). Ocultas = Verdadero
    otro
    Filas (Num_Lines). Ocultas = Falso
    Si terminar
    Siguiente
    End Sub

    Este código me permite ocultar 29-30-31 y solo aparecen 28 días sin importar el mes

    y éste

    Sub Hide_Day()
    Atenuar Num_Lines mientras sea largo
    For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
    Si mes (celdas (núm_líneas, 3)) > celdas (1, 1) entonces
    Filas (Num_Lines). Ocultas = Falso
    otro
    Filas (Num_Lines). Ocultas = Falso
    Si terminar
    Siguiente
    End Sub

    Me permite mostrar todos los días sin importar el mes...

    ¡Puedo adaptarme pero todavía tengo lagunas macro! ¡Gracias por tu mano amiga!

    Responder

    • jarrero
      01/11/2021 a las 03:10

      ¡Hola
      mi mesa comienza en C5 y termina en AH15
      el menú desplegable no afecta la macro, es invisible en el programa
      en C1 se devuelve el valor del mes, esto es lo que se debe ingresar en la macro

      SI Mes (Celdas (5, Num_Col)) > Celdas (1, 3) ENTONCES
      I__> este número 5, corresponde a la fila de días de la semana en la tabla

      La celda 1 es la primera fila de Excel y la 3 es la columna número 3 de Excel.

      no olvides el cartel >

      Responder

  12. Erkan Zekiri
    24/06/2021 a las 14:13

    Bonjour à tous,

    No entiendo porque cuando pongo las macros se me corta el calendario el día 28 de cada mes. ¿¿Sabes por qué??

    Responder

    • Frédéric LE GUEN
      24/06/2021 a las 14:30

      La prueba de la celda es necesariamente siempre cierta. O hay un problema con los valores de las celdas o no estás apuntando a la fila correcta donde están tus fechas

      Responder

      • Erkan
        24/06/2021 a las 23:27

        Pasé más de 4 horas intentándolo todo, pero no entiendo por qué mis meses siempre terminan el día 28.

    • galifde
      06/07/2021 a las 11:06

      Hola, tuve el mismo problema, para solucionarlo cambié la celda de referencia del mes!
      En el ejemplo:
      Si Mes(Celdas(23, Num_Col)) Celdas(1, 1) Entonces 'vuelve a la Celda A1

      Modificación de la celda de referencia del mes:
      Si Mes(Celdas(23, Num_Col)) Celdas(1, 3) Entonces 'regresa a la Celda C1

      funciona perfectamente,
      gracias frederic

      Responder

      • galifde
        06/07/2021 a las 12:53

        Cuidado, falta el símbolo “difieren de”:
        Si Mes(Celdas(23, Num_Col)) Celdas(1, 3)

      • Laura Maggiore
        24/08/2021 a las 19:16

        Muchas gracias por tu ayuda, a mí también me funciona.
        Gracias de nuevo !!!

    • César
      16/07/2021 a las 09:40

      sólo debes poner el símbolo “es superior” en esta línea del test:

      Si Mes (Celdas (6, Num_Col)) > Celdas (1, 1) Entonces

      y no >= porque si pones >= entonces para cada mes la prueba será verdadera

      Responder

  13. Nicolas
    17/04/2021 a las 13:03

    Hola, intenté ingresar esta fórmula pero mi calendario está vertical.
    Probé esta fórmula:
    Sub Hide_Day()
    Atenuar Num_Lines mientras sea largo
    For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
    Si Mes (Celdas (2, Num_Lines)) >= Celdas (1, 1) Entonces
    Líneas (Num_Lines). Ocultas = Verdadero
    otro
    Líneas (Num_Lines). Ocultas = Falso
    Si terminar
    Siguiente
    Range("B3:I33").ClearContents 'Borra el contenido de las celdas
    End Sub

    pero no funciona.

    ¿Puedes ayudarme por favor?

    Responder

  14. Simo
    22/03/2021 a las 18:19

    ¡Hola
    Creé un calendario como este pero necesito guardar valores en la tabla para cada mes

    Responder

    • Frédéric LE GUEN
      22/03/2021 a las 20:01

      NO ES POSIBLE. No puede ingresar valores en las celdas y al mismo tiempo recuperar el resultado de un mes anterior. Este no es el propósito de Excel

      Responder

  15. Célia
    03/03/2021 a las 16:44

    Hola,
    Tengo la misma línea de código que tú, excepto por la cantidad de cuadros que cambian (tabla desplazada). Sin embargo, las casillas 28-29-30 e incluso la 31 no desaparecen.
    Además, todas las filas de la tabla se vuelven rojas (el color de mis fines de semana).
    ¿Tienes una idea del problema?

    Merci

    Responder

    • Gadafi
      20/05/2021 a las 18:32

      Hola,

      Para las columnas que no desaparecen, esto es normal porque no has completado todo el tutorial.
      Para hacer esto, ve aquí https://excel-exercice.com/creation-dun-calendrier-automatique/ , luego vaya al paso "Paso 11: Vincular los menús desplegables a la macro"

      Una vez que completes este paso, todo funcionará.

      Para las líneas que se ponen rojas, también tengo lo mismo. Hasta ahora no he podido encontrar de dónde viene esto.

      Te lo ruego.

      Responder

  16. Christophe
    06/02/2021 a las 19:22

    ¡Hola

    Después de varias horas de investigación decidí preguntarte si es posible modificar esta macro.
    por una mesa donde las fechas sean verticales, en lugar de perder el tiempo en algo imposible.
    gracias de antemano por su respuesta

    Responder

    • Frédéric LE GUEN
      07/02/2021 a las 13:10

      Simplemente invierte la escritura Cells(Num_Line,6) por Cells(6, Num_Line)

      Responder

      • Christophe
        07/02/2021 a las 14:48

        ¡Hola

        Gracias por tu rápida respuesta, funciona sin embargo borra las fórmulas de las celdas y no vuelven a aparecer al cambiar de mes; ¿No debería esto simplemente ocultar la línea?

        gracias de antemano por su respuesta

      • Cédric
        17/05/2021 a las 10:47

        Hola,

        Tengo el mismo problema que "Christophe", la macro borra toda la tabla y no los días deseados (los del mes siguiente).

        Aqui esta mi macro

        Sub Hide_Day()
        Atenuar Num_Line mientras sea largo
        For Num_Line = 33 To 35 ' Bucle en las celdas de los días 29, 30 y 31
        Si Mes (Celdas (Núm_línea, 1)) >= Celdas (1, 1) Entonces
        Filas (Núm_fila). Ocultas = Verdadero
        otro
        Filas (Núm_fila). Ocultas = Falso
        Si terminar
        Siguiente
        Range("A5:G35").ClearContents 'Borra el contenido de las celdas
        End Sub

        Merci

      • Cédric
        27/05/2021 a las 09:39

        Hola,

        Antes que nada pido disculpas porque si miramos un poco más detenidamente vemos que la línea:
        "Range("A5:G35").ClearContents 'Elimina el contenido de las celdas' tal como está escrito elimina el contenido... (sin comentarios)
        Luego, leyendo con más atención (y no rápidamente como la primera vez) me di cuenta de que todo lo que tenía que hacer era cambiar las líneas de referencia del mes:
        Si Mes (Celdas (Núm_línea, 1)) >= Celdas (1, 1) Entonces
        y eso es.
        Gracias por el tutorial y buena suerte.

      • Frédéric LE GUEN
        27/05/2021 a las 10:51

        Bueno, esta es una buena respuesta. Sí, tienes que buscar un poco por ti mismo. Cuando realizas un proyecto con Excel siempre hay una parte que será específica y donde habrá que hacer una adaptación. No todas las respuestas están en la web, a veces todavía hay que pensar 😉

      • crispim
        21/12/2021 a las 21:48

        bonsoir
        Me basé en tu calendario pero los ordené con los días verticalmente.
        Soy nuevo en macros, ¿podrías ayudarme?
        Le agradezco de antemano
        Michel

      • Frédéric LE GUEN
        21/12/2021 a las 22:41

        Sin embargo, se explica en el artículo. En todas las instrucciones de Celdas (fila, columna) debes poner la variable en el parámetro de la fila y no en la columna.

  17. JC
    31/01/2021 a las 18:53

    Hola,

    Gracias por este tutorial y estas explicaciones.
    Por otro lado, noto (como ya lo mencioné en uno de los comentarios) cuando quiero llenar mi agenda, apenas cambio de mes (o año) todo se borra y es imposible conservar la información durante un mes seguido. el 'otro'. ¿Alguien puede aconsejarme y decirme cómo conservar los datos de un mes para otro?

    Gracias de antemano a cualquiera que responda mi pregunta.

    Responder

  18. Florence
    15/12/2020 a las 11:53

    Hola,
    ¡Gracias por tu tutorial que me hizo la vida más fácil pero tengo un problema!
    Creé exactamente el mismo calendario que tú, pero cuando quiero entrar a la macro hay un error de sintaxis que me bloquea.
    Voici mon código:
    Sub Hide_Day()

    Dim Num_Col mientras
    Para Num_Col = 30 a 32
    Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces
    Columnas (Num_Col). Ocultas = Verdadero
    otro
    Columnas(Num_Col).Ocultas = Falso
    Si terminar
    Siguiente

    End Sub

    ¿Alguien puede ayudarme a finalizar este calendario correctamente? Gracias de antemano

    Responder

    • Gadafi
      20/05/2021 a las 18:14

      Hola,

      A la siguiente afirmación le falta un paréntesis:
      Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces

      En su lugar escribe:
      Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)) > celdas (1, 1) entonces

      De hecho, olvidaste cerrar los paréntesis de la función MES.

      Responder

    • Gadafi
      20/05/2021 a las 18:37

      Hola,

      No, no creaste el mismo calendario que él.
      En lugar de escribir:
      Para Num_Col = 30 a 32
      Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces

      Escribir :
      Para Num_Col = 30 a 32
      Si mes (celdas (6, Num_Col))> celdas (1, 1) entonces

      Porque en tu código usas el bucle for incorrectamente.

      Te lo ruego.

      Responder

  19. Manuela Da Costa
    23/11/2020 a las 14:37

    Hola,
    Seguí tu tutorial al pie de la letra, misma fila, misma columna. Solo que la macro no funciona para la primera línea Sub MAsquer_Jour(), se muestra en amarillo fluorescente. No entiendo por qué.
    Y siempre se muestran las líneas que siguen a 30 y 31.
    Merci d'avance pour votre retour

    Responder

  20. Yeso
    30/10/2020 a las 10:53

    Hola,
    Estaba ayudando a una amiga a progresar con sus ejercicios cuando me di cuenta de que su sitio web inyecta grandes errores en el código de sus macros. Rápidamente entendimos por qué ella no avanzaba.

    la línea :
    Si Mes (Celdas (6, Num_Col)) >= Celdas (1, 1) Entonces

    Debe ser reemplazado por:
    Si Mes (Celdas (6, Num_Col)) > Celdas (1, 1) Entonces

    y la línea:
    Range("B6:AF13").ClearContents 'Borra el contenido de las celdas

    Debe ser reemplazado por:
    Range("B6:AF13").ClearContents 'Borra el contenido de las celdas

    El motivo de estas inyecciones es simple, no manejas bien la codificación de caracteres de tus páginas web, por lo que ciertos caracteres especiales no se muestran correctamente, una simple comilla se transforma en """ o una simple flecha se transforma en ">"

    Por el bien de los principiantes, sería bueno corregir todo eso :)

    Responder

    • Frédéric LE GUEN
      30/10/2020 a las 11:22

      Mil gracias,
      De hecho, este es el tipo de error tipográfico que puede ocurrir pero que solo es visible en el momento de la publicación.
      Esta corregido

      Responder

  21. Emy
    10/09/2020 a las 12:09

    Hola,

    Llevo 2 días dándole vueltas a todo en todas direcciones... respecto a la macro. Mis columnas AD AE AF están bien escondidas, pero TODOS los meses de todos los años. No entiendo porqué. Alguien puede ayudarme ? El primer día de las fechas en mi tabla comienza en B6, termina en AF (31 días)

    Responder

  22. Khalil
    06/09/2020 a las 18:20

    Hola;
    Seguí el tutorial pero tuve un problema con la macro para ocultar los días porque el calendario que edité es opuesto al tuyo (días colocados verticalmente) ¿eso afecta la macro?

    Merci par avance verter ayudante votre

    Responder

  23. HP
    31/08/2020 a las 15:53

    hola no puedo transferir la macro en modo vertical??? podria usted ayudarme !!

    Responder

  24. Emilia
    09/07/2020 a las 18:08

    Bonsoir,
    Creé un documento siguiendo tu tutorial de Excel pero no entiendo la macro: "ocultar día"
    ¿Pueden ayudarme si les envío mi documento?
    Muchas gracias.

    Responder

    • Pollito
      23/11/2020 a las 16:09

      Todo iba tan bien...

      Muy muy pero luego muy decepcionado con el final... aunque respeté el formato de la tabla, la macro oculta sistemáticamente los últimos días, mi tabla se detiene en 28 días...

      Perdí toda una tarde intentando resolver el problema sin éxito...

      Por lo tanto, no recomiendo su tutorial a futuros lectores.

      Responder

  25. Invitad@s
    27/06/2020 a las 07:41

    Hola,

    Esto es lo que escribimos para que la macro funcione (Office Suite 2016):

    Sub Hide_Day()

    Dim Num_Col mientras
    Para Num_Col = 30 a 32
    Si Mes (Celdas (12, Num_Col)) > Celdas (1, 1) Entonces
    Columnas (Num_Col). Ocultas = Verdadero
    otro
    Columnas(Num_Col).Ocultas = Falso
    Si terminar
    Siguiente
    Rango ("B13", "AF15"). Borrar contenido
    End Sub

    Mi calendario comienza en B12. Haga que Range().ClearContents comience en B13 porque, de lo contrario, toda la primera línea de B1 desaparecerá...

    Al igual que Moualek, esperaba que el calendario mantuviera los datos en la memoria, pero pasar de un mes al siguiente solo borra los datos permanentemente (si volvemos al mes con los datos, no queda nada)...
    Por lo tanto, para aquellos que esperan configurar un calendario de vacaciones para un equipo o almacenar cualquier dato en la memoria a medida que avanza el calendario, esta no es la herramienta adecuada, al menos tal como está.

    Responder

  26. MOUALEK
    24/06/2020 a las 01:09

    Hola,

    Gracias por este tutorial. Sinceramente muy bien hecho!! ¡Bien hecho!

    Sin embargo, tengo dos preguntas:

    La línea: "If Month(Cells(8, Num_Col)) >= Cells(1, 1) Then" aparece en rojo y parece provocar un error en la macro. Sin embargo, el 8 corresponde a la línea de fecha de mi tabla y Cells(1,1) corresponde a las coordenadas de la celda donde aparece el número del mes en mis listas desplegables.

    Además, esta línea de código parece no tener errores: Range("C9:AG11").ClearContents pero esta es: Range("C9:AG11").ClearContents
    Probé ambos sin estar seguro de entender los matices entre los dos. Pensé que el segundo podría permitirte limpiar la tabla cuando cambies de mes sin borrar permanentemente los datos. Lo que permitiría encontrarlos regresando a dicho mes después. Pura especulación o esperanza por mi parte.

    ¡Gracias de nuevo por todo!

    Responder

Dejar un comentario

Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.

Jugador Más Valioso de Microsoft 2024

Boletín informativo

1 vez al mes:
Consejos y cuestionarios

    No te enviaremos spam. Puedes darte de baja en cualquier momento.

    Macro de calendario automático explicado

    Tiempo de leer: 4 minutos
    Última actualización el 01/03/2025

    El artículo sobre la creación de calendario automático es uno de los artículos más leídos en este sitio, y también es el más comentado, particularmente por la macro que te está causando problemas.

    Este artículo le explicará cada línea del código. Esto le permitirá comprender la lógica y adaptar el código a sus necesidades. Si nunca has creado una macro, es fundamental conocer los conceptos básicos de programación en este artículo.

    Aquí está el código utilizado en el calendario para ocultar los días.

    Si quieres un calendario que registra datos de mes a mes, Volver a este artículo o descargar el archivo.

    Línea 1: Crear el nombre del procedimiento

    Este es el nombre que identificará de forma única el procedimiento. También es gracias a este nombre que podemos enlazar menú desplegable a macro.

    Línea 2: Declaración de variables

    Para escanear varias columnas para leer la fecha que contienen, necesitamos usar una variable. la variable Num_Col se declara (Dim) para ser un número entero (As Long)

    Línea 3: Inicio del bucle

    Vamos a escribir un bucle que variará la variable. Num_Col desde el valor 30 y termina en el valor 32

    La razón es porque en la construcción de nuestro calendario los días 29, 30 y 31 siempre se calcularán en las columnas 30, 31 y 32.

    Fechas calculadas para las columnas 30, 31 y 32

    Línea 4: Prueba entre el mes calculado y el mes seleccionado

    El truco completo del macro calendario está aquí 😮👍

    Como sabes, todos los meses tienen 28 días, pero el mes de febrero puede tener 29 días cada 4 años y 4 meses tienen 30 días (abril, junio, septiembre, noviembre).

    Presentado así, el problema parece complicado de resolver. Pero por otro lado, Excel siempre sabe adaptar las fechas si ya ha pasado final de mes. Por ejemplo, si sumamos 30 días el 1 de febrero, Excel devolverá la fecha del 3 de marzo.

    =DATE(2019;2;1)+30 => 03/03/2019

    Entonces, en nuestro calendario, si elegimos el mes de febrero, las columnas 30, 31 y 32 mostrarán las fechas del mes de marzo.

    Fechas calculadas por Excel para los días 29, 30 y 31 de febrero

    Por lo tanto, escribiremos una prueba que comparará el valor del mes (Month) en las columnas 30, 31 y 32 con el mes devuelto por el menú desplegable.

    Cambiar el valor de la celda vinculada según el mes seleccionado

    Por lo tanto, la prueba buscará si el valor del mes contenido en las celdas AD6, AE6 y AF6. O Cells(6, 30), Cells(6, 31) et Cells(6,32) son mayores o iguales al valor contenido en A1 (la celda vinculada del menú desplegable durante meses).

    Por supuesto, como estamos dentro de un bucle, el valor Num_Col primero tendrá el valor 30 y por lo tanto hará la prueba en la celda AD6, luego en el segundo paso por el bucle, la prueba se hará en la celda AE6 y así sucesivamente.

    Línea 5: Ocultar columna

    Si la prueba anterior es verdadera, la columna Num_Col Está oculto (Hidden = True Ocultar = Verdadero).

    Línea 6 y 7: Mostrar columna

    Si la prueba es falsa (Else), luego la columna Num_Col se visualiza (Hidden = False)

    Esta prueba puede parecer inútil pero si pasas de un mes que no tiene 31 días a un mes con 31 días, debes mostrar las columnas ocultas anteriores (inteligente)

    Línea 8 y 9: Cerrar instrucciones

    En VBA, cuando creas una prueba o un bucle, es fundamental indicar dónde terminan las instrucciones. Para indicar el final de una prueba. If, solo escribe la instrucción End If, y para un bucle For, debe terminar con la instrucción Next

    Línea 10: Borrar los datos ingresados

    Al final del procesamiento para ocultar o mostrar las columnas, el programa borrará los valores. ClearContents registrado en el rango de celdas B6 a AF13 Range("B6:AF13")

    Línea 11: Completa el trámite

    Al igual que con las pruebas o bucles, debes finalizar un procedimiento (y por lo tanto el final de tu programa) con la instrucción End Sub

    Conclusión

    Como habrás notado, incluso si la macro de calendario es corta (8 líneas de código), cada línea es importante y tiene una función bien definida. Además, es importante comprender bien el código antes de realizar cualquier modificación.

    Artículos relacionados

    Boletín informativo

    1 vez al mes:
    Consejos y cuestionarios

      No te enviaremos spam. Puedes darte de baja en cualquier momento.

      53 Comentarios

      1. Laura BARREAU
        02/09/2025 a las 10:47

        Aquí está la macro:

        Sub Hide_Day()

        Dim Num_Col mientras

        Rango("G13:AK45").Borrar contenido

        Para Num_Col = 35 a 37

        Si mes (celdas (12, Num_Col)) celdas (1, 3) entonces

        Columnas (Num_Col). Ocultas = Verdadero

        otro

        Columnas(Num_Col).Ocultas = Falso

        Si terminar

        Siguiente

        End Sub

        Mi problema es el siguiente cuando cambio de mes, pongo un ejemplo; ingreso datos en enero y cuando voy al mes de febrero y vuelvo a enero los datos han desaparecido.

        Responder

      2. Laura BARREAU
        02/09/2025 a las 10:36

        Hola, logré crear la macro y todo funciona. El problema es el siguiente:

        Por ejemplo, yo ingreso datos en el mes de enero, cuando voy a febrero y vuelvo a enero, se borran todos mis datos...

        Aquí está mi macro:

        Sub Hide_Day()
        Dim Num_Col mientras
        Rango("G13:AK45").Borrar contenido
        Para Num_Col = 35 a 37
        Si mes (celdas (12, Num_Col)) celdas (1, 3) entonces
        Columnas (Num_Col). Ocultas = Verdadero
        otro
        Columnas(Num_Col).Ocultas = Falso
        Si terminar
        Siguiente
        End Sub

        ¿Podrías ayudarme por favor?

        Responder

        • Frédéric LE GUEN
          02/09/2025 a las 13:31

          Este programa no gestiona el registro de datos. Para el registro de datos Tienes que comprar esta carpeta.

          Responder

          • Laura BARREAU
            04/09/2025 a las 09:29

            En respuesta, no podemos comprar su archivo. Me sigue decepcionando que nos ofrezcan un archivo excelente, pero no nos muestren consejos que pueden mejorar nuestra vida diaria, como el VBA que solicité.

      3. nolwenn
        20/07/2025 a las 17:41

        Hola,
        cuando uso tu código adaptándolo a mis celdas y al ejecutar la macro este colorea todo mi calendario con el color de la semana y borra los nombres de los días...
        Comentarios faire?

        Responder

      4. Ju
        15/04/2025 a las 10:08

        Hola,
        Estoy haciendo un calendario con macro como lo indicas con tus códigos, sin embargo, mis fechas están en filas y no en columnas, por lo que no funciona, existe algún código especial si las fechas están en filas?
        Si es así ¿qué es?
        gracias por regresar

        Responder

        • Frédéric LE GUEN
          15/04/2025 a las 17:02

          En el enlace a la explicaciones macro, tienes un párrafo que explica cómo transformar el código con un libro de trabajo organizado verticalmente.

          Responder

      5. El diseñador de moda Stéphane
        16/02/2025 a las 16:00

        Hola quisiera saber porque cuando abro el visual basic no veo ninguna linea de codigo como a ti?

        gracias

        Responder

        • Frédéric LE GUEN
          16/02/2025 a las 17:05

          ¿Guardaste tu macro en formato xlsm?

          Responder

      6. sam
        17/01/2025 a las 16:12

        Hola de nuevo, la idea es eliminar el contenido al pasar al mes siguiente y conservarlo al volver al mes anterior.
        ¿Cómo?

        Aquí está mi macro:
        Sub Hide_Day()
        Dim Num_Col mientras
        Rango("D7:AH14").Borrar contenido
        Para Num_Col = 32 a 34
        Si mes (celdas (6, Num_Col)) celdas (1, 3) entonces
        Columnas (Num_Col). Ocultas = Verdadero
        otro
        Columnas(Num_Col).Ocultas = Falso
        Si terminar
        Siguiente
        End Sub

        Responder

        • Frédéric LE GUEN
          21/01/2025 a las 03:25

          Hola, para ello debes adquirir el calendario automático (enlace en el artículo). El trabajo es complicado y requirió varios días de desarrollo en VBA. El código tiene varios miles de líneas para tener en cuenta todos los escenarios (agregar un empleado, eliminar un empleado, modificar un valor, eliminar un valor único, etc.)

          Responder

      7. sam
        17/01/2025 a las 16:03

        Hola,
        ¿Cómo nos aseguramos de que los datos introducidos cada mes queden registrados y no se sobrescriban? Cuando cambias de mes, los datos registrados en el mes anterior se borran, lo cual es muy restrictivo... ¿Existe alguna solución para esto? Eliminar el contenido claro no es suficiente para obtener información.
        aquí está mi macro:

        Sub Hide_Day()
        Dim Num_Col mientras
        Rango("D7:AH14").Borrar contenido
        Para Num_Col = 32 a 34
        Si mes (celdas (6, Num_Col)) celdas (1, 3) entonces
        Columnas (Num_Col). Ocultas = Verdadero
        otro
        Columnas(Num_Col).Ocultas = Falso
        Si terminar
        Siguiente
        End Sub

        Gracias de antemano por sus comentarios.

        Responder

      8. NO TAME
        01/07/2022 a las 10:57

        Muchas gracias a ti. Este tutorial resuelve una de mis dificultades en la gestión del cronometraje del personal.

        Responder

      9. JEBLI
        02/05/2022 a las 16:14

        Hola,
        Muchas gracias por tu esfuerzo y por todo lo que haces para ayudarnos.
        Te estimo mucho y te deseo felicidad en el mundo entero.
        Si me lo permiten me gustaría aprender a registrar mis datos de un mes para otro (seguimiento del tiempo del personal).
        De nuevo muchas gracias.

        Responder

      10. Souleymane Cissé
        25/04/2022 a las 15:10

        Hola, me gustaría poder cambiar el mes pero actualizando cada vez los datos que contiene cada mes sin sobrescribirlos.

        Responder

        • Frédéric LE GUEN
          26/04/2022 a las 00:45

          Debes eliminar la línea de la macro ClearContents.

          Responder

      11. Steven
        13/08/2021 a las 07:14

        Hola y gracias por el tutorial!

        ¡Necesito una mano amiga! Como muchos, mi calendario es vertical pero ese no es mi problema, adapté la macro. ¡Guardo y funciona! Excepto que cada mes tiene 28 días. Tuve que eliminar la línea que solicita la eliminación de las celdas para mis necesidades y noté que si configuro todo en FALSO y se muestra todo el día, me preguntaba si faltaba alguna línea en la macro. Tengo la impresión de que solo toma 28 días o se muestra todos los días... aquí están los códigos

        Sub Hide_Day()
        Atenuar Num_Lines mientras sea largo
        For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
        Si mes (celdas (núm_líneas, 3)) > celdas (1, 1) entonces
        Filas (Num_Lines). Ocultas = Verdadero
        otro
        Filas (Num_Lines). Ocultas = Falso
        Si terminar
        Siguiente
        End Sub

        Este código me permite ocultar 29-30-31 y solo aparecen 28 días sin importar el mes

        y éste

        Sub Hide_Day()
        Atenuar Num_Lines mientras sea largo
        For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
        Si mes (celdas (núm_líneas, 3)) > celdas (1, 1) entonces
        Filas (Num_Lines). Ocultas = Falso
        otro
        Filas (Num_Lines). Ocultas = Falso
        Si terminar
        Siguiente
        End Sub

        Me permite mostrar todos los días sin importar el mes...

        ¡Puedo adaptarme pero todavía tengo lagunas macro! ¡Gracias por tu mano amiga!

        Responder

        • jarrero
          01/11/2021 a las 03:10

          ¡Hola
          mi mesa comienza en C5 y termina en AH15
          el menú desplegable no afecta la macro, es invisible en el programa
          en C1 se devuelve el valor del mes, esto es lo que se debe ingresar en la macro

          SI Mes (Celdas (5, Num_Col)) > Celdas (1, 3) ENTONCES
          I__> este número 5, corresponde a la fila de días de la semana en la tabla

          La celda 1 es la primera fila de Excel y la 3 es la columna número 3 de Excel.

          no olvides el cartel >

          Responder

      12. Erkan Zekiri
        24/06/2021 a las 14:13

        Bonjour à tous,

        No entiendo porque cuando pongo las macros se me corta el calendario el día 28 de cada mes. ¿¿Sabes por qué??

        Responder

        • Frédéric LE GUEN
          24/06/2021 a las 14:30

          La prueba de la celda es necesariamente siempre cierta. O hay un problema con los valores de las celdas o no estás apuntando a la fila correcta donde están tus fechas

          Responder

          • Erkan
            24/06/2021 a las 23:27

            Pasé más de 4 horas intentándolo todo, pero no entiendo por qué mis meses siempre terminan el día 28.

        • galifde
          06/07/2021 a las 11:06

          Hola, tuve el mismo problema, para solucionarlo cambié la celda de referencia del mes!
          En el ejemplo:
          Si Mes(Celdas(23, Num_Col)) Celdas(1, 1) Entonces 'vuelve a la Celda A1

          Modificación de la celda de referencia del mes:
          Si Mes(Celdas(23, Num_Col)) Celdas(1, 3) Entonces 'regresa a la Celda C1

          funciona perfectamente,
          gracias frederic

          Responder

          • galifde
            06/07/2021 a las 12:53

            Cuidado, falta el símbolo “difieren de”:
            Si Mes(Celdas(23, Num_Col)) Celdas(1, 3)

          • Laura Maggiore
            24/08/2021 a las 19:16

            Muchas gracias por tu ayuda, a mí también me funciona.
            Gracias de nuevo !!!

        • César
          16/07/2021 a las 09:40

          sólo debes poner el símbolo “es superior” en esta línea del test:

          Si Mes (Celdas (6, Num_Col)) > Celdas (1, 1) Entonces

          y no >= porque si pones >= entonces para cada mes la prueba será verdadera

          Responder

      13. Nicolas
        17/04/2021 a las 13:03

        Hola, intenté ingresar esta fórmula pero mi calendario está vertical.
        Probé esta fórmula:
        Sub Hide_Day()
        Atenuar Num_Lines mientras sea largo
        For Num_Lignes = 31 To 33 ' Bucle en las celdas de los días 29, 30 y 31
        Si Mes (Celdas (2, Num_Lines)) >= Celdas (1, 1) Entonces
        Líneas (Num_Lines). Ocultas = Verdadero
        otro
        Líneas (Num_Lines). Ocultas = Falso
        Si terminar
        Siguiente
        Range("B3:I33").ClearContents 'Borra el contenido de las celdas
        End Sub

        pero no funciona.

        ¿Puedes ayudarme por favor?

        Responder

      14. Simo
        22/03/2021 a las 18:19

        ¡Hola
        Creé un calendario como este pero necesito guardar valores en la tabla para cada mes

        Responder

        • Frédéric LE GUEN
          22/03/2021 a las 20:01

          NO ES POSIBLE. No puede ingresar valores en las celdas y al mismo tiempo recuperar el resultado de un mes anterior. Este no es el propósito de Excel

          Responder

      15. Célia
        03/03/2021 a las 16:44

        Hola,
        Tengo la misma línea de código que tú, excepto por la cantidad de cuadros que cambian (tabla desplazada). Sin embargo, las casillas 28-29-30 e incluso la 31 no desaparecen.
        Además, todas las filas de la tabla se vuelven rojas (el color de mis fines de semana).
        ¿Tienes una idea del problema?

        Merci

        Responder

        • Gadafi
          20/05/2021 a las 18:32

          Hola,

          Para las columnas que no desaparecen, esto es normal porque no has completado todo el tutorial.
          Para hacer esto, ve aquí https://excel-exercice.com/creation-dun-calendrier-automatique/ , luego vaya al paso "Paso 11: Vincular los menús desplegables a la macro"

          Una vez que completes este paso, todo funcionará.

          Para las líneas que se ponen rojas, también tengo lo mismo. Hasta ahora no he podido encontrar de dónde viene esto.

          Te lo ruego.

          Responder

      16. Christophe
        06/02/2021 a las 19:22

        ¡Hola

        Después de varias horas de investigación decidí preguntarte si es posible modificar esta macro.
        por una mesa donde las fechas sean verticales, en lugar de perder el tiempo en algo imposible.
        gracias de antemano por su respuesta

        Responder

        • Frédéric LE GUEN
          07/02/2021 a las 13:10

          Simplemente invierte la escritura Cells(Num_Line,6) por Cells(6, Num_Line)

          Responder

          • Christophe
            07/02/2021 a las 14:48

            ¡Hola

            Gracias por tu rápida respuesta, funciona sin embargo borra las fórmulas de las celdas y no vuelven a aparecer al cambiar de mes; ¿No debería esto simplemente ocultar la línea?

            gracias de antemano por su respuesta

          • Cédric
            17/05/2021 a las 10:47

            Hola,

            Tengo el mismo problema que "Christophe", la macro borra toda la tabla y no los días deseados (los del mes siguiente).

            Aqui esta mi macro

            Sub Hide_Day()
            Atenuar Num_Line mientras sea largo
            For Num_Line = 33 To 35 ' Bucle en las celdas de los días 29, 30 y 31
            Si Mes (Celdas (Núm_línea, 1)) >= Celdas (1, 1) Entonces
            Filas (Núm_fila). Ocultas = Verdadero
            otro
            Filas (Núm_fila). Ocultas = Falso
            Si terminar
            Siguiente
            Range("A5:G35").ClearContents 'Borra el contenido de las celdas
            End Sub

            Merci

          • Cédric
            27/05/2021 a las 09:39

            Hola,

            Antes que nada pido disculpas porque si miramos un poco más detenidamente vemos que la línea:
            "Range("A5:G35").ClearContents 'Elimina el contenido de las celdas' tal como está escrito elimina el contenido... (sin comentarios)
            Luego, leyendo con más atención (y no rápidamente como la primera vez) me di cuenta de que todo lo que tenía que hacer era cambiar las líneas de referencia del mes:
            Si Mes (Celdas (Núm_línea, 1)) >= Celdas (1, 1) Entonces
            y eso es.
            Gracias por el tutorial y buena suerte.

          • Frédéric LE GUEN
            27/05/2021 a las 10:51

            Bueno, esta es una buena respuesta. Sí, tienes que buscar un poco por ti mismo. Cuando realizas un proyecto con Excel siempre hay una parte que será específica y donde habrá que hacer una adaptación. No todas las respuestas están en la web, a veces todavía hay que pensar 😉

          • crispim
            21/12/2021 a las 21:48

            bonsoir
            Me basé en tu calendario pero los ordené con los días verticalmente.
            Soy nuevo en macros, ¿podrías ayudarme?
            Le agradezco de antemano
            Michel

          • Frédéric LE GUEN
            21/12/2021 a las 22:41

            Sin embargo, se explica en el artículo. En todas las instrucciones de Celdas (fila, columna) debes poner la variable en el parámetro de la fila y no en la columna.

      17. JC
        31/01/2021 a las 18:53

        Hola,

        Gracias por este tutorial y estas explicaciones.
        Por otro lado, noto (como ya lo mencioné en uno de los comentarios) cuando quiero llenar mi agenda, apenas cambio de mes (o año) todo se borra y es imposible conservar la información durante un mes seguido. el 'otro'. ¿Alguien puede aconsejarme y decirme cómo conservar los datos de un mes para otro?

        Gracias de antemano a cualquiera que responda mi pregunta.

        Responder

      18. Florence
        15/12/2020 a las 11:53

        Hola,
        ¡Gracias por tu tutorial que me hizo la vida más fácil pero tengo un problema!
        Creé exactamente el mismo calendario que tú, pero cuando quiero entrar a la macro hay un error de sintaxis que me bloquea.
        Voici mon código:
        Sub Hide_Day()

        Dim Num_Col mientras
        Para Num_Col = 30 a 32
        Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces
        Columnas (Num_Col). Ocultas = Verdadero
        otro
        Columnas(Num_Col).Ocultas = Falso
        Si terminar
        Siguiente

        End Sub

        ¿Alguien puede ayudarme a finalizar este calendario correctamente? Gracias de antemano

        Responder

        • Gadafi
          20/05/2021 a las 18:14

          Hola,

          A la siguiente afirmación le falta un paréntesis:
          Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces

          En su lugar escribe:
          Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)) > celdas (1, 1) entonces

          De hecho, olvidaste cerrar los paréntesis de la función MES.

          Responder

        • Gadafi
          20/05/2021 a las 18:37

          Hola,

          No, no creaste el mismo calendario que él.
          En lugar de escribir:
          Para Num_Col = 30 a 32
          Si mes (celdas (6, 30), celdas (6, 31), celdas (6, 32)> celdas (1, 1) entonces

          Escribir :
          Para Num_Col = 30 a 32
          Si mes (celdas (6, Num_Col))> celdas (1, 1) entonces

          Porque en tu código usas el bucle for incorrectamente.

          Te lo ruego.

          Responder

      19. Manuela Da Costa
        23/11/2020 a las 14:37

        Hola,
        Seguí tu tutorial al pie de la letra, misma fila, misma columna. Solo que la macro no funciona para la primera línea Sub MAsquer_Jour(), se muestra en amarillo fluorescente. No entiendo por qué.
        Y siempre se muestran las líneas que siguen a 30 y 31.
        Merci d'avance pour votre retour

        Responder

      20. Yeso
        30/10/2020 a las 10:53

        Hola,
        Estaba ayudando a una amiga a progresar con sus ejercicios cuando me di cuenta de que su sitio web inyecta grandes errores en el código de sus macros. Rápidamente entendimos por qué ella no avanzaba.

        la línea :
        Si Mes (Celdas (6, Num_Col)) >= Celdas (1, 1) Entonces

        Debe ser reemplazado por:
        Si Mes (Celdas (6, Num_Col)) > Celdas (1, 1) Entonces

        y la línea:
        Range("B6:AF13").ClearContents 'Borra el contenido de las celdas

        Debe ser reemplazado por:
        Range("B6:AF13").ClearContents 'Borra el contenido de las celdas

        El motivo de estas inyecciones es simple, no manejas bien la codificación de caracteres de tus páginas web, por lo que ciertos caracteres especiales no se muestran correctamente, una simple comilla se transforma en """ o una simple flecha se transforma en ">"

        Por el bien de los principiantes, sería bueno corregir todo eso :)

        Responder

        • Frédéric LE GUEN
          30/10/2020 a las 11:22

          Mil gracias,
          De hecho, este es el tipo de error tipográfico que puede ocurrir pero que solo es visible en el momento de la publicación.
          Esta corregido

          Responder

      21. Emy
        10/09/2020 a las 12:09

        Hola,

        Llevo 2 días dándole vueltas a todo en todas direcciones... respecto a la macro. Mis columnas AD AE AF están bien escondidas, pero TODOS los meses de todos los años. No entiendo porqué. Alguien puede ayudarme ? El primer día de las fechas en mi tabla comienza en B6, termina en AF (31 días)

        Responder

      22. Khalil
        06/09/2020 a las 18:20

        Hola;
        Seguí el tutorial pero tuve un problema con la macro para ocultar los días porque el calendario que edité es opuesto al tuyo (días colocados verticalmente) ¿eso afecta la macro?

        Merci par avance verter ayudante votre

        Responder

      23. HP
        31/08/2020 a las 15:53

        hola no puedo transferir la macro en modo vertical??? podria usted ayudarme !!

        Responder

      24. Emilia
        09/07/2020 a las 18:08

        Bonsoir,
        Creé un documento siguiendo tu tutorial de Excel pero no entiendo la macro: "ocultar día"
        ¿Pueden ayudarme si les envío mi documento?
        Muchas gracias.

        Responder

        • Pollito
          23/11/2020 a las 16:09

          Todo iba tan bien...

          Muy muy pero luego muy decepcionado con el final... aunque respeté el formato de la tabla, la macro oculta sistemáticamente los últimos días, mi tabla se detiene en 28 días...

          Perdí toda una tarde intentando resolver el problema sin éxito...

          Por lo tanto, no recomiendo su tutorial a futuros lectores.

          Responder

      25. Invitad@s
        27/06/2020 a las 07:41

        Hola,

        Esto es lo que escribimos para que la macro funcione (Office Suite 2016):

        Sub Hide_Day()

        Dim Num_Col mientras
        Para Num_Col = 30 a 32
        Si Mes (Celdas (12, Num_Col)) > Celdas (1, 1) Entonces
        Columnas (Num_Col). Ocultas = Verdadero
        otro
        Columnas(Num_Col).Ocultas = Falso
        Si terminar
        Siguiente
        Rango ("B13", "AF15"). Borrar contenido
        End Sub

        Mi calendario comienza en B12. Haga que Range().ClearContents comience en B13 porque, de lo contrario, toda la primera línea de B1 desaparecerá...

        Al igual que Moualek, esperaba que el calendario mantuviera los datos en la memoria, pero pasar de un mes al siguiente solo borra los datos permanentemente (si volvemos al mes con los datos, no queda nada)...
        Por lo tanto, para aquellos que esperan configurar un calendario de vacaciones para un equipo o almacenar cualquier dato en la memoria a medida que avanza el calendario, esta no es la herramienta adecuada, al menos tal como está.

        Responder

      26. MOUALEK
        24/06/2020 a las 01:09

        Hola,

        Gracias por este tutorial. Sinceramente muy bien hecho!! ¡Bien hecho!

        Sin embargo, tengo dos preguntas:

        La línea: "If Month(Cells(8, Num_Col)) >= Cells(1, 1) Then" aparece en rojo y parece provocar un error en la macro. Sin embargo, el 8 corresponde a la línea de fecha de mi tabla y Cells(1,1) corresponde a las coordenadas de la celda donde aparece el número del mes en mis listas desplegables.

        Además, esta línea de código parece no tener errores: Range("C9:AG11").ClearContents pero esta es: Range("C9:AG11").ClearContents
        Probé ambos sin estar seguro de entender los matices entre los dos. Pensé que el segundo podría permitirte limpiar la tabla cuando cambies de mes sin borrar permanentemente los datos. Lo que permitiría encontrarlos regresando a dicho mes después. Pura especulación o esperanza por mi parte.

        ¡Gracias de nuevo por todo!

        Responder

      Dejar un comentario

      Su dirección de correo electrónico no será publicada. Los campos necesarios están marcados con *

      Este sitio usa Akismet para reducir los no deseados. Obtenga más información sobre cómo se procesan sus datos de comentarios.