Saltar al contenido

Ver el contenido de un textbox cuando supere una fecha determinada


rustin

Recommended Posts

publicado

Buenas!

Tengo una duda. Dentro de mi formulario, tengo 12 textbox (uno por cada mes meses) cuyo contenido, por ejemplo es 50 en cada uno de ellos. La idea es que no se vea el contenido de los textbox hasta que no vaya llegando el día 1 de cada mes. Es decir, que el textbox de enero, el día 1 de enero se vea el "50"; el 1 de febrero se vea el textbox de febrero, en marzo aparezca en la casilla de marzo otros 50 y así hasta diciembre.

Qué tendría que hacer?

Gracias!

publicado

@rustin, te dejo una solución. Ten en cuenta que deberás nombrar los textbox como TextBox1 para enero... TextBox12 para diciembre

Private Sub UserForm_Activate()
Dim con As Control, mes As String

mes = Month(Date)

For Each con In UserForm1.Controls
    If con.Name = "TextBox" & mes Then
        con.ForeColor = 0
    ElseIf con.Name <> "TextBox" & mes Then
        con.ForeColor = vbWhite
    End If
Next con

End Sub

 

publicado

Partiendo de la misma premisa que Haplox:

Private Sub UserForm_Activate()
For x = Month(Date) + 1 To 12
   Controls("TextBox" & x).Visible = False
Next
End Sub

 

publicado

Gracias por la respuesta tan rápida. A lo mejor no me he explicado bien y el término "que no se vea" no es el correcto.

Como verás en el adjunto, querría tener un control de los pagos de los clientes, que siempre tienen la misma cuota, en este caso 50€. Querría usar este formulario a modo de consulta para saber cuanto debe cada cliente, ¿Cómo? Pues que cada dia 1 de cada mes se aparezca automáticamente 50 en la casilla del mes correspondiente y que a su vez, en la casilla de abajo del todo "suma total" me sume los importes que debe. Creo que el método que me comentas no serviría.

Gracias de nuevo.

cobro.png

publicado
Hace 2 horas, rustin dijo:

 Creo que el método que me comentas no serviría.

Pues entonces empieza tu pregunta de la forma correcta, no a medias para que luego digas que encima no funciona -_-. Tienes los códigos. Solo cambiando lo que se haría con él tienes la solución. Te toca a ti

publicado
Hace 17 minutos , Haplox dijo:

Pues entonces empieza tu pregunta de la forma correcta, no a medias para que luego digas que encima no funciona -_-. Tienes los códigos. Solo cambiando lo que se haría con él tienes la solución. Te toca a ti

@HaploxSi, tienes toda la razón, de hecho he empezado mi mensaje anterior asumiendo que yo mismo no me había explicado bien y agradeciendo tu respuesta. El hecho de que diga que no me he explicado bien va implícito que asumo que tu respuesta no me ha valido debido a mi no buena comunicación.

Lo de "Pues entonces empieza tu pregunta de la forma correcta" creo que sobra. Primero porque si tengo una duda, no quiero marear a nadie, y menos a mi, y cuanto antes supere mi problema mejor para todos, así que si hubiera sabido una mejor manera de explicar las cosas, lo hubiera hecho desde el principio. Segundo, como te he dicho antes, empecé diciendo en mi mensaje que me había explicado mal por lo que si asumo mi culpa, no entiendo el porqué de recriminarme que pregunte de forma correcta, ya lo he hecho yo mismo. Y tercero, amigo, es un foro de dudas. Habrá gente con mucha experiencia, con poca, con muchísima (como es tu caso) o con ninguna (como es la mía); si ves que no me expreso bien o que no comunico como debería, es que este ámbito no lo domino y por ello estoy aquí, para pedir ayuda por algo no conozco, un poco de paciencia, que como te repetí, yo mismo cuando vi que no me cuadraba tu respuesta di por hecho que no me había explicado bien. Ahora el pataleo, la recriminación y el "te toca a ti" lo veo innecesario. Si ves a un tío con una "L" en el coche y ves que va lento, encima no le pites. 

Aún y así, gracias por dedicar tu tiempo e intentar ayudar de una forma u otra.

 

publicado
Hace 5 minutos , rustin dijo:

Aún y así, gracias por dedicar tu tiempo e intentar ayudar de una forma u otra.

Con lo fácil que era subir esa imagen de principio y explicar lo de la suma. En fin...

publicado

Por cierto... Ya solo hacer un condicional para que si no está pagado algún mes también sea 50

mes = Month(Date)

For Each con In UserForm1.Controls
    If con.Name = "TextBox" & mes Then
        con.Value = 50
    ElseIf con.Name <> "TextBox" & mes Then
        con.Value = 0
    End If
Next con

End Sub
  • 2 weeks later...
publicado

He estado haciendo pruebas y no sale como me gustaría así que creo que voy a cambiar el sistema y simplificarlo todo lo máximo posible. Voy a adjuntar el archivo e igualmente una captura y a voy a empezar con el nuevo planteamiento a ver si consigo aclararme ( y aclararos).

Supongamos que dentro del formulario tengo un textbox llamado "text_precio" cuyo valor en la base de datos es de 60€ y suponiendo que estamos en 01/01/2019 lo que me gustaría es:

Cuando sea 1 de enero, me aparezca en el textbox de enero ("text_enero") 60€. Cuando llegue el 1 de febrero, me aparezca en la parte de febrero ("text_febrero") , otros 60€, y así sucesivamente, y que a su vez, en la "deuda total" me aparezca la suma de todas las cantidades que estén en ese momento. La idea es que automáticamente me genere una "deuda" con el alumno a principio de cada mes y yo manualmente, una vez que vayan pagando, los vaya borrando.

Digo esto, por si hay alguna forma más sencilla de hacerla, (que seguro que la hay), me lo digáis y así me lo curro.

Gracias y disculpas por tanta torpeza

CONTROL MESES PAGADOS.xlsm

alumnos.png

publicado
En 26/11/2018 at 11:33 , Antoni dijo:

Te subo algo en cuanto tenga un ratito.

Estupendo Antoni. Muchas gracias

Ya con esto terminaría y no molestaría mas :)

publicado

EL tiempo a dedicar a tu consulta sobrepasa mi tiempo disponible los días laborables, por lo que difìcilmente podré ponerme a ello hasta el fin de semana.

De paso contesta ¿Solo de Enero a Agosto?,  ya de paso sube un archivo con información en la hoja Alumnos, porqué en el archivo que has subido no hay datos.

publicado

Claro que si! ahí va la base de datos modificada y preparada.

Adjunto una captura de la ficha. Resumo brevemente lo que necesito. El 1 de enero, me debería de aparecer en la casilla de enero la cantidad de  111€. El 2 de febrero, en la casilla del mismo mes aparezca 111€, y así sucesivamente con todos los meses. Cabe destacar que las cantidades que aparezcan en las casillas, deberían de estar ahí permanentemente hasta que se borraran de forma manual.

Si fuese más fácil, no me importaría que en las casillas que están pendientes de llegar el mes, aparezca un "0".

Y para terminar, en la casilla "deuda total" me gustaría que hubiese un sumatorio de las cantidades pendientes de pago las cuales se vayan actualizando automáticamente una vez aparezca o elimine una cantidad

 

base de datos 1.0.xlsm

ficha.png

publicado

Bueno, creo que mas o menos esto es lo que estás buscando.

Verás que he añadido la hoja Deuda, se emplea para llevar el control de la generación mensual de la deuda.

Al inicio del curso debes borrar la columna B de dicha hoja.

Uso la propiedad Tag de los textbox de los meses para poder tratarlos como un conjunto en lugar de hacerlo uno a uno.

También he añadido una validación para el contenido de los meses antes de guardar.

Ya comentarás.

base de datos 1.0 (2).xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.