Llamar a un TextBox usando una variable

Resuelto
Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   -  
pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   -
Hola,

Tengo un pequeño problema con VBA: quiero compartir una variable entre dos USF para reutilizarla en un comando (creo que ahí está el fallo). Resumiendo, en mi primer USF tengo varias cajas de texto destinadas a recibir fechas; mi segundo USF es un calendario donde elegimos la fecha y la reinsertamos en el primer USF. Hasta aquí todo funciona, el problema es que para que mi macro funcione necesito un USF calendario para cada textbox destinada a albergar una fecha, ya que especifico el nombre de mi textbox en el USF calendario. Quiero crear una variable para no multiplicar los USF calendario (tengo 10 cajas de texto que pueden contener fechas).

Esto es lo que hice:

En un módulo declaré mi variable
Public date2 As Date
Public CaseDate As String

En mi primer USF creé un botón al lado de cada textbox que puede contener una fecha con este modelo:
Sub Calendar1_Click() CaseDate = Echeance1 'nom de ma textbox Calendrier1.Show vbModeless End Sub

Y finalmente en mi USF calendario, elijo reimplantar la fecha seleccionada:
'Traitement.Echeance1.value = date2' funciona pero debo crear un USF calendario para cada nombre de textbox
Traitement.CaseDate.Value = date2 'Esto no funciona (busca algo llamado CaseDate en mi USF directamente) pero me permitiría manejarlo todo con el mismo calendario.
Traitement.Show vbModeless
Unload Me

Lo siento, probablemente me estoy expresando mal...

Gracias de antemano por tu ayuda.

2 respuestas

  1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
     
    Hola,

    Intenta tal vez:
    Tratamiento.Controls(CaseDate).Value = date2

    Si CaseDate es un String debería funcionar...

    --
    Atentamente,
    Franck
    0
    1. Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   28
       
      Hola Pikaju, Gracias por tu ayuda. Al probar tu solución, me di cuenta de otro problema (que ya existía antes pero que probablemente no había notado)… En efecto, antes de ejecutar esta línea: Traitement.Controls(CaseDate).Value = date2 VBA regresa a mi USF "Traitement" y lanza Userform_Initialize, lo cual me genera problema ya que toma de nuevo los valores por defecto de mi USF, así que si se han realizado cambios antes de elegir la fecha, todo se pierde… (y en este caso hace que mi macro falle porque hay un valor que no consigue recuperar). ¿Es posible evitar el lanzamiento de este procedimiento, y así comprobar si tu solución funciona? Gracias de antemano,
      0
    2. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Cuando pasas de tu UserForm de tratamiento a tu calendario, ¿cómo "cierras" Tratamiento?
      UnLoad Tratamiento
      o
      Tratamiento.Hide
      Normalmente Tratamiento.Hide solo oculta el userform y por tanto no vuelve a ejecutar Initialize. A verificar, no obstante.
      Si no, no cierra Tratamiento y usas las propiedades Modales de tus userforms...
      0
    3. Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   28
       
      Estoy perdido, pero completamente….

      Al principio no cerraba ningún USF; usaba las propiedades modales (más bien no modales) para que Calendrier1, "pase por encima" del procesamiento. sin cerrar nada.
      Pero no conociendo todas las particularidades de un USF no modal, me resigné a simplemente .hide mi "Tratamiento" ... Y por fin, desesperado, intenté Unload mi "Tratamiento".

      En los 3 casos, en el momento de ejecutar esta línea
      Traitement.Controls(CaseDate).Value = date2

      VBA vuelve a iniciar la inicialización del tratamiento.

      No entiendo realmente por qué este procedimiento se relanza cada vez...

      En relación al USF completo, no sé si podrá ayudarte. Por mi parte, no entiendo el 90% de estos procedimientos porque el USF no es mío y he dejado el código tal como estaba.
      http://cjoint.com/data3/3HgpcBZSioi.htm

      PD: Mi pregunta ya no tiene nada que ver con el tema original, lo siento.
      Edit : Error en el enlace.
      0
    4. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      ¿Podrías pasarme el libro, incluso sin datos... con los 2 userforms y sus códigos...?
      0
  2. Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   28
     
    He retirado algunos datos, pero te dejé dos ejemplos y los datos básicos para que el archivo sea utilizable.

    Me disculpo de antemano, porque puede doler a la vista... especialmente en lo que respecta al código que yo mismo he creado, a las fórmulas o incluso al diseño...

    Gracias de nuevo por tu ayuda.

    http://cjoint.com/data3/3Hgpzfp92mU.htm
    0
    1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Si hablas del userform que se abre con el pequeño + junto a la fecha de vencimiento de la acción 1, funciona muy bien...
      La fecha introducida en el calendario se coloca donde debe sin desajustarse nada............
      0
    2. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Mira tu archivo en retorno.
      Te hice los 4 primeros botones "+" . Funcionan bien.
      Por otro lado, Calendar es el nombre de un control VBA. Por eso he renombrado tus botones Calendario...
      0
    3. Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   28
       
      Hola Pikaju, Efectivamente, la implementación de la fecha se hace sin problemas. Pero si intentas modificar el texto antes (p. ej.: cambio la descripción del incidente, pongo una fecha de vencimiento y luego valido → mis modificaciones en la descripción no se tienen en cuenta, porque la USF se inicializa al utilizar el calendario (mira paso a paso). Por otro lado, no consigo usar el archivo que me enviaste; cada vez que hago clic en un + me aparece un "Compilación Error: Method or data member not found" en el calendario1, aunque sí está ahí con el nombre correcto (Odio la versión de Excel que tenemos en el trabajo, a menudo me salen errores sin explicación como ese, cuando no me ocurren en casa). De nuevo, gracias por tu ayuda.
      0
    4. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Hola,

      "Compilación Error: Method or data member not found"

      Mi fallo, mi gran fallo....
      He nombrado un botón de comando Calendario1 igual que el userform... Pasa bien renombrando el userform Calendario.

      Por otro lado, no consigo reproducir el segundo fallo. Para mí todo va bien...

      El archivo con algunas modificaciones (notablemente en el módulo 1)
      https://www.cjoint.com/?DHhihUymFko
      0
    5. Villette54 Mensajes publicados 300 Fecha de registro   Estado Miembro Última intervención   28
       
      Bien por la solución del primer fallo... Ni siquiera me había dado cuenta, realmente me falta práctica...

      En cuanto al segundo fallo, conseguí solucionarlo con una nueva variable para poder saltar la rutina de inicialización, así que ya no me dará problemas.

      Gracias por volver a trabajar un poco en mi módulo 1, de hecho tuve algunas dificultades para crearlo (en parte porque no había inicializado mi variable...).

      Creo que todos los problemas mencionados se han solucionado... Muchas gracias.

      ¿Puedo permitirme abusar de tu amabilidad y pedirte que eches un vistazo a otro de mis problemas aquí? ¿O debo crear un tema aparte (que quizás pueda ayudar a otras personas)?
      Se trata principalmente de alimentación/visualización en las cajas de texto (el formato de la fecha, y hacer que existan menús desplegables dependientes).

      Nuevamente, gracias.
      0