Ocultar calendario vinculado a un textbox en un formulario

Tengo un userform con varios textbox y varios combobox. En uno de los textbox tengo vinculado un calendario que cuando se hace click en él, se muestra el calendario perfectamente; luego se hace click sobre la fecha; luego ésta se va al textbox y se oculta el calendario. Pero resulta que a veces necesito que al hacer click an alguno de los otros textbox o en alguno de los combobox, se oculte el calendario previamente mostrado sin haber elegido una fecha.

Por ejemplo, la siguiente instrucción funciona cuando hago click sobre el userform sin haber elegido una fecha del calendario que está vinculado al combobox:

Private Sub Userform_click()
Calendar1.Visible = False
End Sub  

He intentado con estas dos instrucciones y ne me ha funcionado.

Private Sub textbox2_Click()
Calendar1.Visible = False
End Sub

Private Sub combobox1_Click()
Calendar1.Visible = False
End Sub

¿Cómo hacer para que cuando haga click sobre alguno de los otros textbox o combobox se oculte el calendario sin haber elegido una fecha?

1 respuesta

Respuesta
1

En lugar de colocar instrucciones en el evento Click del Userform colocá esa línea en el evento Initialize para que no se muestre salvo que hagas clic en el textbox.

Luego en el evento Exit de ese textbox podés colocar estas instrucciones:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Calendar1.Visible = False
End Sub

Sdos y no olvides valorar la respuesta.

Hola Elsa. La instrucción del evento Exit me está funcionando, pero ahora tengo el siguiente problema: cuando hago click en el calendario para seleccionar la fecha, se está demorando mucho (6 segundos para ser exactos) para asignar la fecha en el textbox1. ¿Habrá alguna solución para ello? 

De todos modos sos la mejor, sino, eres la que le sigue.

Un abrazo.

;)

Intenta con esta secuencia:

Private Sub UserForm_Initialize()   'al abrir el UF se oculta
Calendar1.Visible = False
End Sub
'al doble clic en el textbox se muestra
Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True
End Sub
'al seleccionar la fecha se pasa al campo y se oculta
Private Sub Calendar1_Click() 
TextBox2 = Calendar1.Value
Calendar1.Visible = False
End Sub
Private Sub UserForm_Click() 'al clic en algún sector del UF se oculta 
Calendar1.Visible = False
End Sub

Sdos!

Hola Elsa. Espero no me odies por tanta ignorancia. 

Si coloco la instrucción que me das del TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean) y dejo la siguiente instrucción, cuando hago click en el calendario no se está colocando la fecha en el textbox2 de la fecha:

Private Sub textbox2_exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
Calendar1.Visible = False
End Sub

Tendría que quitar la anterior instrucción pero ya no se me ocultaría el calendario cuando haga click en algún otro de los textbox.

Las demás instrucciones que me habías dado, ya las tenía.

No obstante, creo que mejor decidiré otra cosa que igual me puede servir como alternativa.

Para mí seguís siendo la más más...mejor jeeee.

Un abrazo.

Solo tenés que dejar el código de los 4 eventos que te dejé en última respuesta, el del Exit ahora no va más.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas