Calendario con dos textbox

Tengo un calendario cargado en un formulario, este tiene dos textbox uno con fecha inicial y otro con fecha final, en el evento hacer doble clic en ambos textbox emerge el calendario pero solo puedo cargar la fecha en el textbox1, si lo hago en el textbox2 me carga el textbox1 quedando este vacío.

1 respuesta

Respuesta
1

¿Tienes el evento dobleclick para ambos textbox en el mismo handle? ¿O sea el mismo método se ejecuta cuando se dispara el evento doble click en ambos textbox?

si así es los dos textbox abren el mismo calendario con el evento doble clik

Debes identificar cuando el doble click es del primer o del segundo textbox, eso creas una variable de tipo textbox dentro del método, y haces el cast del sender, luego ya puedes obtener el nombre del control y hacer lo que necesites para cada caso.

me podrías por favor aclarar esa parte o darme ejemplos con lineas de comando tal como debería quedar el código..gracias

dim txt as textbox

txt = Ctype(sender,textbox)

perdoname pero sigo sin entender..este es el código por fa miralo a ver en que estoy mal y de nuevo gracias

Option Explicit
Private Sub Calendar1_click()
Calendar1.Visible = False
TextBox1.Text = Calendar1.Value
TextBox2.Text = Calendar1.Value
End Sub
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True
End Sub
Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True
End Sub
Private Sub UserForm_Activate()
Calendar1.Today
End Sub

Private Sub Calendar1_click()
Calendar1.Visible = False
TextBox1.Text = Calendar1.Value
TextBox2.Text = Calendar1.Value
End Sub

Aquí estas colocando el valor del calendario en ambos textbox por eso siempre que selecciones una fecha en el calendario ambos textbox tendrán el mismo valor.

Deberías tener una variable de clase que indique si le diste clcik al textbox1 o al textbox2

Después del Option Explicit

Dim numControl as integer

...

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True

numcontrol = 1

End Sub

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True

numcontrol = 2
End Sub

Private Sub Calendar1_click()
Calendar1.Visible = False

if numcontrol = 1 then

TextBox1.Text = Calendar1.Value

else
TextBox2.Text = Calendar1.Value

end if
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas