1
abierto Microsoft Excel. Haga clic en el menú " Herramientas" , seleccione "Macro " y haga clic en " Editor de Visual Basic " si utiliza Excel 2003 o una versión anterior . Para Excel 2007/2010 , haga clic en la pestaña de " desarrolladores" y luego haga clic en " Visual Basic ". Si no ve la ficha " desarrolladores" , haga clic en el botón "Office" y luego " Opciones de Excel ". En la primera pantalla , haga clic en la casilla junto a "Mostrar ficha Programador en la cinta de opciones " y luego haga clic en " Aceptar". La pestaña de " desarrolladores" debería mostrar ahora .
2 Haga clic en la opción del menú " Insertar" en el Editor de Visual Basic . Haga clic en " módulos" para iniciar un nuevo módulo de código
3
Copia la primera parte del código siguiente en el nuevo módulo: .
" CalendarMaker Sub ( ) < Desproteger hoja br>
"si tenía calendario anterior para evitar error
DrawingObjects ActiveSheet.Protect : . = False , Contents: = False , _
Escenarios: = False
< p > ' prevenir la pantalla parpadea mientras dibuja calendario.
Application.ScreenUpdating = False
' Configurar la interceptación de errores .
On Error GoTo MyErrorTrap
' Claro zona a1 : g14 incluyendo cualquier calendario anterior
Range (" a1 : g14 ") . . Claro
'Use InputBox para obtener mes y año que desee y establecer la variable
' myInput .
myInput = InputBox ( " Escriba el mes y el año de calendario" )
' Permitir al usuario para terminar con la macro Cancelar en InputBox .
Si myInput = " " Then Exit Sub
'Obtener el valor de la fecha del comienzo del mes introducida .
StartDay = DateValue ( myInput )
' Comprobar si la fecha válida, pero no el primero de el mes
'- si es así, restablecer StartDay al primer día del mes
Si Día ( StartDay ) < > 1 Entonces
StartDay = DateValue (mes . ( StartDay ) & " /1 /" & _
Año ( StartDay ))
End If celular Prepare
' para el mes y año que deletree completamente .
Range (" a1" ) NumberFormat = " mmmm yyyy"
' Centro Mes y Año etiqueta en a1 : g1 con adecuada
. tamaño, altura y negrita .
Range (" a1 : g1 ") . . .
HorizontalAlignment = xlCenterAcrossSelection
VerticalAlignment = xlCenter
Font.Size = 18 < br . . >
Font.Bold = True
RowHeight = 35
extremo con
Preparad a2 : g2 para el día de la semana con etiquetas de centrado , tamaño < . altura y negrita br>
'
Range (" a2 : g2 " )
ColumnWidth = 11
VerticalAlignment = xlCenter
< p . . > . HorizontalAlignment = xlCenter
. VerticalAlignment = xlCenter
. Orientación = xlHorizontal
. Font.Size = 12
. Font.Bold = True
RowHeight = 20
extremo con
' Put días de la semana en a2 : . . g2
Range ( "A2 ") = " domingo "
Range ( "B2 ") = " lunes "
Range (" c2 ") = " martes "
Range (" d2 ") = " miércoles "
Rango
( " e2 ") = " Jueves "
Range (" f2" ) = " Viernes "
Range (" g2 ") = " Sábado "
< p > ' Preparar a3 : g7 para fechas con alineación a la izquierda /superior, tamaño, altura
' . y negrita
Range (" a3 : g8 ") .
HorizontalAlignment = xlRight
. VerticalAlignment = xlTop
. Font.Size = 18
. Font.Bold = True
. RowHeight = 21
< p > Fin Con
' Ponga mes y año introducido ortografía totalmente hacia .
rango " A1" ( "a1" ) . Valor = Application.Text ( myInput , " mmmm yyyy" )
"variable establecer y obtener el día de la semana comienza el mes .
DayofWeek = WeekDay ( StartDay )
' Juego de variables para identificar el año y el mes como separado < ' variables.
CurYear = Year ( StartDay )
CurMonth = Mes
( StartDay ) ' br>
variables Set y calcular el primer día del próximo mes .
FinalDay = DateSerial ( CurYear , CurMonth + 1 , 1) spanish
' Place a " 1 " en la posición de la celda de la primera jornada de la Red elegido
' mes basado en DayofWeek . "
quitar las comillas en la primera y la última línea del código.
4
Copia el resto del código que toma el formato del código anterior y crear el calendario real . Pega el código justo debajo de donde el código de los extremos anteriores.
" Select Case DayofWeek
Caso 1
Range (" a3 ") . Valor = 1
< p> caso 2
Range (" b3 ") . Valor = 1
caso 3
Range (" c3 ") . Valor = 1
caso 4
Range (" d3 ") . Valor = 1
caso 5
Range (" e3 ") . Valor = 1
caso 6
Range (" F3 ") . Valor = 1
caso 7
Range (" G3 ") . Valor = 1
End Select < br 'Recorrer rango A3 : g8 incrementando cada celda después de que el " 1 "
' >
celular
para cada celda Range (" a3 : g8 ") .
< p> RowCell = cell.Row
ColCell = cell.Column
' hacer si " 1" en la primera columna .
Si cell.Column = 1 y celular. Row = 3 Entonces
'Do si la celda actual no está en primera columna.
ElseIf cell.Column < > 1 Entonces
Si cell.Offset ( 0 , -1 ) . Valor > = 1 Entonces
cell.Value cell.Offset = ( 0 , -1) . Valor + 1
'Stop cuando el último día del mes ha sido
' entró
Si cell.Value > ( FinalDay - StartDay ) . Luego
cell.Value = ""
' loop Exit cuando el calendario tiene el número correcto de
' días indicados.
Salir a la Venta
End If End If
' hacer sólo si la celda actual no está en la fila 3 y está en la columna 1 .
ElseIf cell.Row > 3 y cell.Column = 1 a continuación,
cell.Value cell.Offset = ( -1 , 6 ) . Valor + 1
'Stop cuando el último día del mes que se ha introducido
Si cell.Value > ( FinalDay - StartDay ) . Luego
cell.Value "bucle Exit cuando calendario tiene el número correcto de días