Calendario

Leo nuevamente te excribo para ver si puedes ayudarme con esta consulta, tengo una hoja 1 donde tengo los meses de enero a diciembre como botones de comando, al presionarlo debería crear otra hoja con el nombre del determinado mes, y dentro de esta hoja de manera horizontal los días que lo conforman, no por semanas, todo de manera horizontal. Teniendo en cuenta que puede ser 30 o 31 días. Gracias

1 Respuesta

Respuesta
1
Bueno primero te recomiendo que no utilices tantos botones, mejor usa un combox con los valores del mes y un Botón que genera la hoja según la selección del Combobox.
Te dejo el código, y te dejo una tarea.
Pasos:
1.- Crea un ComboBox1 y un botón de comando
2.- En el código de la hoja donde tienes estos objetos pega el siguiente código:
Private Sub ComboBox1_GotFocus()
If ComboBox1.ListCount = 0 Then
ComboBox1. AddItem "01-Enero"
ComboBox1. AddItem "02-Febrero"
ComboBox1. AddItem "03-Marzo"
ComboBox1. AddItem "04-Abril"
ComboBox1. AddItem "05-Mayo"
ComboBox1. AddItem "06-Junio"
ComboBox1. AddItem "07-Julio"
ComboBox1. AddItem "08-Agosto"
ComboBox1. AddItem "09-Septiembre"
ComboBox1. AddItem "10-Octubre"
ComboBox1. AddItem "11-Noviembre"
ComboBox1. AddItem "12-Diciembre"
ComboBox1.ListRows = 12
End If
End Sub
Private Sub CommandButton1_Click()
Genera_Hoja_Mes ComboBox1.Text
End Sub
3.- Crea un Modulo en el proyecto y pega el siguiente codigo:
Sub Genera_Hoja_Mes(Mes)
Sheets(Sheets.Count).Select
Sheets.Add
ActiveSheet.Name = Mid(Mes, 4, 20)
ActiveSheet.Move After:=Sheets(Sheets.Count)
Range("A1").Select
ActiveCell.FormulaR1C1 = Left(Mes, 2) & "/01/2008"
Selection.NumberFormat = "dd/mm/yyyy;@"
'
'TAREA (MODIFICAR ESTA LINEA POR OTRO CODIGO PARA QUE SOLO PEGUE HASTA EL ULTIMO DIA DEL MES)
Application.Selection.AutoFill Destination:=Range("A1:AE1"), Type:=xlFillDefault
End Sub
4.- Te queda como tarea modificar la función Genera_Hoja_Mes(Mes) del Modulo.
Estimado Leone como siempre "maestro" en tus respuestas, estoy intentando solucionar la tarea que dejaste. Muchas gracias.
Aquí te envío una solución a la Tarea, espero que hayas encontrado alguna forma de hacerlo, sino utiliza esta:
Sustituye la linea indicada en la tarea por estas lineas:
Fecha_Inicio = "01/" & Left(Mes, 2) & "/" & Year(Now)
Fecha_Fin = "01/" & IIf(Left(Mes, 2) + 1 = 13, "01", Left(Mes, 2) + 1) & "/" & IIf(Left(Mes, 2) + 1 = 13, Year(Now) + 1, Year(Now))
Cantidad_Dias = DateDiff("d", Fecha_Inicio, Fecha_Fin)
Range("A1").Select
Selection.AutoFill Destination:=Range(Cells(1, 1), Cells(1, Cantidad_Dias)), Type:=xlFillDefault
Existe un detalle en el paso 3 sustituye la linea:
ActiveCell.FormulaR1C1 = Left(Mes, 2) & "/01/2008"
por esta:
ActiveCell.FormulaR1C1 = Left(Mes, 2) & "/01/" & Year(Now)
Maestro, he realizado lo que me indicaste pero me sale un error 1004 que indica Error definido por la aplicación o el objeto al ponerle el depurador me indica la fila donde dice:
Selection.AutoFillDestination:Range(Cells(1,1),Cells(1,Cantidad_Dias)), Type:=xFillDefault
¿Me puedes explicar por que?, disculpa tantas molestias y gracias por tus siempre acertadas respuestas.
Saludos cordiales
Roberto
La linea que me envías no es igual a la que te indique ve las diferencias:
Selection.AutoFillDestination:Range(Cells(1,1),Cells(1,Cantidad_Dias)), Type:=xFillDefault 'Mal
Selection.AutoFill Destination:=Range(Cells(1, 1), Cells(1, Cantidad_Dias)), Type:=xlFillDefault 'Bien
El error que tenia se trataba en declaración de una variable, la tenia como string pero era ineger, ya esta solucionado y como siempre muchas gracias por la ayuda.
Espero no sea molestia si más adelante requiero tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas