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
  En 9/11/2018 at 9:52 , rustin dijo:

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

Expand  

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
  En 9/11/2018 at 12:19 , 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

Expand  

@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
  En 9/11/2018 at 13:04 , rustin dijo:

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

Expand  

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.xlsmFetching info...

alumnos.png

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.xlsmFetching info...

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.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para generar un código alfanumérico continuo que al guardar los datos se copia en la Celdas “B5” de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Private Sub CommandButton3_Click()     If Hoja58.Range("B5").Value < 9999 Then Hoja58.Range("B5").Value Hoja58.Range("B6").Value + 1     Else        Hoja58.Range("B5").Value = 1     End If If Hoja59.Range("B5").Value < 9999 Then Hoja59.Range("B5").Value = Hoja59.Range("B6").Value + 1 Else        Hoja59.Range("B5").Value = 1     End If End Sub El código se genera normalmente sin embargo no se copia inmediatamente en las Celdas “B5” sino que aparece en las Celdas “B6” mientras que las Celdas “B5” siempre permanecen en blanco, actualmente el código consta de tres letras y cuatro dígitos (RCI-0000) pero me interesa poderle concatenar el mes y año en formato mm-yy para que el código finalmente quede expresado de la siguiente forma RCI-0000-00-00 Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad cuando introduzco texto en los TextBox 5, 6 y 7 y dicho texto es mas largo que el ancho de los Texbox el texto se copia en una misma línea lo que dificulta verificar la redacción, así como visualizar cualquier error por lo cual necesito me ayuden con una macro que justifique el texto dentro de los Textbox, he probado usar la función Multiline sin obtener el resultado esperado. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo los datos provenientes de los TextBox 5, 6 y 7 se guardan en las Columnas H, I y O de las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) sin embargo cuando el texto es abundante no se visualiza completamente en las celdas correspondientes de allí que necesito que cada fila se ajuste al tamaño de la celda que contenga mayor cantidad de texto para lo cual he probado con la siguiente macro: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.EntireRow.AutoFit End Sub Sin embargo, dicha macro coloca todas las filas del tamaño del texto que contengan y lo que en realidad necesito es que dicha macro solo se aplique desde la Fila 5 en adelante. Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • Saludos amigos espero estén bien  En la actualidad utilizo la siguiente macro para que la fecha aparezca en el Textbox2: Private Sub UserForm_activate() Me.TextBox2.Value = VBA.Date End Sub Sin embargo, una vez guardo los datos la fecha cambia de formato y se guarda en formato mm/dd/yyyy en vez de dd/mm/yyyy y este cambio de fecha me distorsiona los resultados de las fórmulas en las Columnas J en las Hojas 58 (MATRIZ1) y Hojas59 (MATRIZ2) Mucho les sabre agradecer la ayuda que me puedan dar RCI PRUEBA..xlsm
    • ¡Hola! Después de un buen tiempo ausente...  @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos.   Extraer piezas - gramos 365_GP.xlsx
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.