Valor de control "MES" (en letras), segun valor en formato "fecha" de otro control

Hay alguna forma de escribir algo en VBA por ejemplo si en el "controlx" la fecha en formato fecha tiene el mes xx/04/xxxx por ejemplo, ¿qué el "controly" tenga el valor "Abril"? ¿Se entiende?

Tengo un informe que me tira registros tipo tabla y se genera por mes seleccionado. Lo que quiero es que tome el mes alguno de esos registros (que evidentemente es siempre el mismo) y me lo ponga en un control de ese informe que hace las veces de titulo para que aparezca el mes.

2 Respuestas

Respuesta
1

Con gusto le suministro una función que diseñé hace un tiempo es la que utilizo en mis aplicaciones. Teniendo en cuenta que la función MonthName() devuelve el nombre del mes en minúscula es necesario código VBA para darle un formato a nuestro parecer. Esta es la función:

Esta función le permite obtener el nombre del mes completo o abreviado y en mayúscula, minúscula o la primera letra en mayúscula y puede llamarse desde cualquier formulario o reporte. Ejemplo en un reporte.

Aunque en este ejemplo usé un control para seguir su consulta, en la practica uso es un cuadro de texto y le doy el centrado y pasó el titulo más el nombre del mes con la función, así conservo el título centrado. Este es el resultado del reporte.

Aunque en la columna FECHA VENTA hay meses diferentes solo lo hago para ilustrar el título, lógicamente deberían ser todos los meses 04.

Espero que esta función le complemente la información que le han suministrado.

Gracias por el ejemplo, lo aplique y me funciona perfecto, pero tengo el siguiente problema: El codigo lo que hace es poner el mes actual en curso, y que pasa si quiero generar el informe con las practicas del mes anterior, o de otro mes pasado? Yo lo que quisiera es que tome en cuenta el mes de las practicas seleccionadas y que en base a ese mes inrtoduzca el valor en el txtbox.

Bueno me autocontesto y comparto aquí la solución por si a alguien le sirve. Desde ya quiero agradecerle a Sveinbjorn El Rojo y a Eduardo Pérez Fernández por la ayuda. El tema es el siguiente, adaptando el código que me paso eperezfer, el cual introduce el mes en curso en un control en formato de letras, pudiendo elegir mayúscula, minúscula, solo la primer letra mayúscula, o las 3 primeras letras del mes. El código funciona de maravilla, al ponerlo en el formulario con informe (en mi caso) devuelve el mes en curso automáticamente al abrirse el elemento en cuestión. Ahora bien, en mi caso lo requería para generar informes de procedimientos, los cuales se generan desde un formulario y el usuario seleccionaba el mes y el año del informe a generar. Esto devolvía un informe con el listado de procedimientos realizados por mes, y como titulo del informe neecsitaba que se agregue, en formato texto, el mes en cuestión en relación al informe generado.

En el origen del control, según lo compartido por eperezfer, se introduce lo siguiente: =nombredelmes(Falso;1;Fecha()) donde falso o verdadero determinan si uno quiere que el formato del mes salga completo o solo las 3 primeras letras del mismo (ABRIL o ABR). El siguiente numero (puede ser 1, 2 o 3 según el código), formatea los caracteres en MAYÚSCULAS, MINÚSCULAS o solo la primera letra del mes en mayúscula. Ahora bien, la tercera parte del lo escrito en el origen del control (Fecha()) lo que hace es introducir el mes en curso según la fecha del sistema. Justamente aquí es donde yo necesitaba que el mes no fuese el actual del sistema si no que me introduzca el mes del informe generado. Es por eso que cambie la parte de Fecha() por el campo del informe que posee las fechas de los procedimientos (mi campo se llama F_procedimiento), por lo que en el origen del control del txtbox que use le puse =nombredelmes(Falso;1;[F_PROCEDIMIENTO]) en ves de =nombredelmes(Falso;1;Fecha()), obteniendo así como resultado que en el titulo del informe que se genera, tome la fecha de los controles del informe f_procedimiento y entonces aparezca como titulo el mes en formato letra correspondiente al mes de los procedimientos realizados según el informe generado.

Adjunto resultado y nuevamente, millones de gracias para ambos.

Efectivamente eso era lo que habia que hacer

Respuesta
2

Tienes las funciones Mes(), para sacar el mes de una fecha, en número, y NombreMes() para pasar del número de mes a su nombre. Sus equivalentes en VBA serían Month() y MonthName()

De todas formas, no te haría falta usar VBA, te bastaría con poner en el origen de control del cuadro de texto de tu encabezado:

=NombreMes(Mes(FECHA))

Gracias por la ayuda, me voy aproximando más a lo que busco, el problema es que el informe no lo generaría siempre "a mes vencido"por ejemplo, si no que se genera ha pedido y solo si se requiere, y lo hace el usuario, entonces ponerle al control esa instrucción devolvería el mes en el que me encuentro (si no estoy equivocado). Lo que quisiera es que se genere el mes en formato de letras teniendo en cuenta las fechas del informe. POr ejemplo si estamos ahora en abril y deseo generar el informe con las endoscopias de febrero, que en el txtbox me salga febrero.

Pues yo entiendo que si el campo de tu informe se llama FECHA (como has marcado en el circulo de la imagen), la expresión te devolverá el mes del valor que contenga ese campo fecha y no la fecha actual del sistema (que obtendrías con la función Fecha() )...

Pero puede que tengas problemas por haber usado ese nombre en concreto para el campo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas