# calendario en excel



## aaguioli (Aug 19, 2003)

Saludos, espero que se la esten pasando bien, mi pregunta es que si se puede crear una macro que cuando la accese , aparezca el control calendar 9.0, y obviamente pueda seleccionar una fecha y pegarla en cualquier celda, ademas de que se pueda ocultar para seleccionarla mas tarde, esto me servira como para ponerle fecha a una factura etc. agradeceria mucha la respuesta.


----------



## Greg Truby (Oct 23, 2003)

No soy gran experto en controles OCX pero usted podría crear un UserForm y poner un control de Calendario allí y en el CommandButton que la cierre algo como

<font face=Courier New><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> CommandButton1_Click()
    [A1] = Calendar1.Value
    Me.Hide
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>

--- si no sabe como poner un calendario en el UserForm ---

Encima del Toolbox Toolbar haga un click-derecho y seleccione Additional Controls y si usted ya tiene un control de Calendarios allí debe aparecer en el listado.  Si no aparece vea Tools | References para incluir el Library que contiene su control de calendario.

Buena suerte


----------



## Miguelsp (Oct 24, 2003)

Hola

Lo  que yo encontré en el foro inglés me fué de gran ayuda. Igual a ti también.

Primero inserta el objeto calendario
Luego pon el siguiente código

Private Sub Calendar1_DblClick() 
    ActiveCell.NumberFormat = "dd-mmm-yy" 
    ActiveCell = Calendar1 
    Calendar1.Visible = False 
End Sub 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
     If Not Intersect(Target, [$A$1] Is nothing Then 
            Calendar1.Left = Target.Left + Target.Width - Calendar1.Width 
            Calendar1.Top = Target.Top + Target.Height 
            Calendar1.Visible = True 
         Else: Calendar1.Visible = False 
    End If 
End Sub 

Esto te permitirá que aparezca en la celda A1 el calendario y que haciedo doble click te aparezca la fecha. Si quieres otro destino (otra celda) donde poner el calendario simplemente cambia la linea donde dice $A$1 por la celda que tu quiras.

Suerte


----------



## Greg Truby (Oct 24, 2003)

Muy interesante, Miguel.  Nunca había intentado de colocar un control Calendario directamente encima de la hoja así, funciona lo más bien. (Por eso vengo aquí - casi siempre aprendo algo.)

Un comentario - falta un parentesis en la línea de código para la intercección:

<font face=Courier New>    <SPAN style="color:#00007F">If</SPAN> <SPAN style="color:#00007F">Not</SPAN> Intersect(Target, [$A$1]) <SPAN style="color:#00007F">Is</SPAN> <SPAN style="color:#00007F">Nothing</SPAN> <SPAN style="color:#00007F">Then</SPAN>
        Calendar1.Left = Target.Left + Target.Width - Calendar1.Width</FONT>

Segundo comentario - si la hoja va a estar utilizado por otros, pienso que sería necesario asegurar que la persona quien la va a usar tiene el control Calendario disponible en su computadora. 

Saludos y gracias otra vez, Miguel.


----------

