calendario en excel

aaguioli

Board Regular
Joined
Mar 19, 2003
Messages
61
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.
 

Excel Facts

What does custom number format of ;;; mean?
Three semi-colons will hide the value in the cell. Although most people use white font instead.
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
 
Upvote 0
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
 
Upvote 0
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.
 
Upvote 0

Forum statistics

Threads
1,223,939
Messages
6,175,529
Members
452,651
Latest member
wordsearch

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top