Disculap que te moleste pero y te mande un archivo con la consulta de como puedo combinar ese formulario de calendario y espacios en blanco, es decir como puede uno cuando se cargue el formulario que las cajas de texto aparezcan vacías, de tal manera que uno pueda colocar la fecha a través de la aplicación del calendario, pero que si quiero colocar una sola no me interfiera con el resto, de antemano muchas gracias, por tomarte el tiempo para ayudarme
En el siguiente procedimiento tienes que quitar lo referente a txtFecha... Las tres líneas *********************** Private Sub UserForm_Initialize() With Calendario .Value = Now() txtFecha.Text = Format(.Value, "dd-mmm-yyyy") txtInicio.Text = Format(.Value, "dd-mmm-yyyy") txtFin.Text = Format(.Value, "dd-mmm-yyyy") .Top = txtFecha.Top + txtFecha.Height .Left = txtFecha.Left .Width = 210 .Height = 130 End With End Sub **************** quedaría así Private Sub UserForm_Initialize() With Calendario .Value = Now() .Left = txtFecha.Left .Width = 210 .Height = 130 End With End Sub Prueba y me cuentas.
Lo había intentado pero no me da resultado lo que me dijiste
Te paso el código modificado ***************** Option Explicit Dim datFecha As Date Dim txtCual As MSForms.TextBox ' aquí se guarda que textbox le corresponde Dim ImgCual As Image Private Sub Calendario_DblClick() Dim intRes As Integer If datFecha > Calendario.Value Then intRes = MsgBox("La fecha seleccionada es anterior" & vbCrLf & vbCrLf & _ "¿Deseas continuar", vbYesNo + vbQuestion, "Fecha anterior") If intRes = vbYes Then txtCual.Text = Format(Calendario.Value, "dd-mmm-yyyy") ImgCual.SpecialEffect = fmSpecialEffectRaised Calendario.Visible = False End If Else txtCual.Text = Format(Calendario.Value, "dd-mmm-yyyy") ImgCual.SpecialEffect = fmSpecialEffectRaised Calendario.Visible = False End If End Sub Private Sub Calendario_Exit(ByVal Cancel As MSForms.ReturnBoolean) imgFecha.SpecialEffect = fmSpecialEffectRaised Calendario.Visible = False End Sub Private Sub imgFecha_Click() If Calendario.Visible Then txtFecha.Text = Format(Calendario.Value, "dd-mmm-yyyy") Calendario.Visible = False imgFecha.SpecialEffect = fmSpecialEffectRaised Else If IsDate(txtFecha.Text) Then datFecha = CDate(txtFecha.Text) imgFecha.SpecialEffect = fmSpecialEffectSunken ' asigna a las variables de control, los controles que corresponden Set txtCual = txtFecha Set ImgCual = imgFecha Calendario.Visible = True Calendario.ZOrder Calendario.SetFocus End If End Sub Private Sub imgFin_Click() If Calendario.Visible Then txtFin.Text = Format(Calendario.Value, "dd-mmm-yyyy") Calendario.Visible = False imgFin.SpecialEffect = fmSpecialEffectRaised Else If IsDate(txtFin.Text) Then datFecha = CDate(txtFin.Text) imgFin.SpecialEffect = fmSpecialEffectSunken ' asigna a las variables de control, los controles que corresponden Set txtCual = txtFin Set ImgCual = imgFin With Calendario .Top = txtFin.Top + txtFin.Height .Left = txtFin.Left .Visible = True .ZOrder .SetFocus End With End If End Sub Private Sub imgInicio_Click() If Calendario.Visible Then txtInicio.Text = Format(Calendario.Value, "dd-mmm-yyyy") Calendario.Visible = False imgInicio.SpecialEffect = fmSpecialEffectRaised Else If IsDate(txtInicio.Text) Then datFecha = CDate(txtInicio.Text) imgFecha.SpecialEffect = fmSpecialEffectSunken ' asigna a las variables de control, los controles que corresponden Set txtCual = txtInicio Set ImgCual = imgInicio With Calendario .Top = txtInicio.Top + txtInicio.Height .Left = txtInicio.Left .Visible = True .ZOrder .SetFocus End With End If End Sub Private Sub txtFecha_Change() End Sub Private Sub UserForm_Initialize() With Calendario .Value = Now() 'txtFecha.Text = Format(.Value, "dd-mmm-yyyy") 'txtInicio.Text = Format(.Value, "dd-mmm-yyyy") 'txtFin.Text = Format(.Value, "dd-mmm-yyyy") .Top = txtFecha.Top + txtFecha.Height .Left = txtFecha.Left .Width = 210 .Height = 130 End With End Sub **************** Prueba y me cuentas