Como puedo hacer un macro que me de un formato

Necesito un macro que adecue mi hoja como un calendario

1 Respuesta

Respuesta
1
No se si te entiendo bien, pero bueno lo intento. He entendido que lo que quieres es que te salga un calendario por ejemplo de un mes concreto y de un año concreto. He trabajado un poco y ahi va:
1.- Crea en la hoja1 un combobox1, es para selecionar el més
2.- Crea en la hoja 1 un textbox1, es para poner el año
3.- Es hora de crear el calendario, en la celda C6 escribo con la macro el més en cuestion, seria interesante que esta celda ocupe el rango ("c6:i6"). Y a funcionar, cada vez que cambies el año en el textbox (tiene que tener 4 digitos, y tengamos un més seleccionado en el combobox1, nos hae el calendarío.
La macro en cuestion es :
Si quieres, te cuelgo un fichero llamado CALENDARIO en esta pagina
http://cid-3d609d87423f2eeb.skydrive.live.com/browse.aspx/P%c3%bablico
Private Sub ComboBox1_Change()
If Len(TextBox1) = 4 Then
Sheets(1).Range("C6") = ComboBox1.Text
FECHA = "1-" & ComboBox1.Text & "-" & TextBox1.Text
DIASEMANA = Format(FECHA, "dddd")
Select Case DIASEMANA
Case "lunes"
c = 3
Case "martes"
c = 4
Case "miércoles"
c = 5
Case "jueves"
c = 6
Case "viernes"
c = 7
Case "sábado"
c = 8
Case "domingo"
c = 9
End Select
Select Case ComboBox1.Text
Case "ABRIL", "JUNIO", "SEPTIEMBRE", "NOVIEMBRE"
TOTAL = 30
Case "FEBRERO"
If Val(TextBox1) Mod 4 = 0 Then TOTAL = 29 Else TOTOAL = 28
Case Else
TOTAL = 31
End Select
A = 0
Range("C9:i14") = ""
Range("C9:i14").Borders(xlDiagonalDown).LineStyle = xlNone
Range("C9:i14").Borders(xlDiagonalUp).LineStyle = xlNone
Range("C9:i14").Borders(xlEdgeLeft).LineStyle = xlNone
Range("C9:i14").Borders(xlEdgeTop).LineStyle = xlNone
Range("C9:i14").Borders(xlEdgeBottom).LineStyle = xlNone
Range("C9:i14").Borders(xlEdgeRight).LineStyle = xlNone
Range("C9:i14").Borders(xlInsideVertical).LineStyle = xlNone
Range("C9:i14").Borders(xlInsideHorizontal).LineStyle = xlNone
For x = 9 To 14
For y = c To 9
A = A + 1
Sheets(1).Cells(x, y) = A
With Sheets(1).Cells(x, y).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Sheets(1).Cells(x, y).Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Sheets(1).Cells(x, y).Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Sheets(1).Cells(x, y).Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
If A = TOTAL Then Exit For
c = 3
Next y
If A = TOTAL Then Exit For
Next x
Else
MsgBox ("HAY QUE PONER CUATRO CIBRAS PARA EL AÑO")
End If
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Len(TextBox1) = 4 Then
ComboBox1_Change
End If
End Sub
.- para que te ponga los meses en el combobox, hay que añadir en thisworkbook
Private Sub Workbook_Open()
Sheets(1).Select
Sheets(1). ComboBox1. Clear
Sheets(1). ComboBox1. AddItem "ENERO"
Sheets(1). ComboBox1. AddItem "FEBRERO"
Sheets(1). ComboBox1. AddItem "MARZO"
Sheets(1). ComboBox1. AddItem "ABRIL"
Sheets(1). ComboBox1. AddItem "MAYO"
Sheets(1). ComboBox1. AddItem "JUNIO"
Sheets(1). ComboBox1. AddItem "JULIO"
Sheets(1). ComboBox1. AddItem "AGOSTO"
Sheets(1). ComboBox1. AddItem "SEPTIEMBRE"
Sheets(1). ComboBox1. AddItem "OCTUBRE"
Sheets(1). ComboBox1. AddItem "NOVIEMBRE"
Sheets(1). ComboBox1. AddItem "DICIEMBRE"
End Sub
Muchisimas gracias experto, tengo que trabajar en eso, despues cualquier duda te avisaré, pero de antemano gracias por tu ayuda y tu tiempo.
Arballo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas