Excel har ett brett användningsområde. I den här artikeln visar vi dig hur du skapar en kalender i ett kalkylblad med hjälp av ett makro.
Förutom att lagra och analysera data i din Excel kan du också använda den för att slutföra andra uppgifter. Du kan till exempel samla in information med hjälp av Excel eller anteckna din planering i kalkylbladet. Idag har vi hittat en ny användning. Du kan skapa en kalender i ett kalkylblad. Du kan se effekten i bilden nedan.
Du kan skriva in några uppgifter i den här kalendern. Och funktionen är densamma som ett memorandum. Genom att använda Excel blir dessa uppgifter tydligare. Följ nu stegen i följande del och se hur det fungerar.
Skapa en kalender
- Tryck på knappen "Alt + F11" på tangentbordet för att öppna kalkylbladet.
- Och sätt sedan in en ny modul i Visual Basic-redigeraren.
- Nu kopierar du följande koder till den nya modulen:
Sub Create_Monthly_Calender()
Dim firstweekday As Integer, EndDay As Integer, _
FirstWeekColumnIndex As Integer, AssignmentDate As Integer, _
FirstCountNumber As Integer, SecondCountNumber As Integer, _
LastDay As Range, objRange As Range, RowIndexofLastday As Integer, FirstCountforTargetRange As Integer, SecondCountforTargetRange As Integer
firstday = InputBox("Input the year, month and the first day with this format: year/month/day")
If firstday = "" Then Exit Sub
Range("A1:G1").Merge
Range("A1") = Year(firstday) & "." & Month(firstday)
Range("A2") = "Sunday"
Range("A2").AutoFill Destination:=Range("A2:G2"), Type:=xlFillDefault
firstweekday = Application.WorksheetFunction.Weekday(firstday)
Cells(3, firstweekday) = 1
Select Case Month(firstday)
Case 1, 3, 5, 7, 8, 10, 12
EndDay = 31
Case 4, 6, 9, 11
EndDay = 30
Case 2
If (Year(firstday) Mod 4) = 0 And (Year(firstday) Mod 100) <> 0 Or ((Year(firstday) Mod 400) = 0) Then
EndDay = 29
Else
EndDay = 28
End If
End Select
For FirstWeekColumnIndex = 1 To (7 - firstweekday)
Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex) = Cells(3, firstweekday).Offset(0, FirstWeekColumnIndex - 1) + 1
Next FirstWeekColumnIndex
AssignmentDate = Range("G3") + 1
For FirstCountNumber = 2 To 10 Step 2
For SecondCountNumber = 0 To 6
Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = AssignmentDate
AssignmentDate = AssignmentDate + 1
If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
Exit For
End If
Next SecondCountNumber
If Cells(3, firstweekday).Offset(FirstCountNumber, 1 - firstweekday + SecondCountNumber) = EndDay Then
Exit For
End If
Next FirstCountNumber
’set format for the range
With Range("A1")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Size = 16
.Font.Bold = True
.Interior.Color = RGB(196, 202, 201)
End With
With Range("A2:G2")
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Bold = True
End With
For Each LastDay In ActiveSheet.UsedRange
If LastDay = EndDay Then
RowIndexofLastday = LastDay.Row
End If
Next
For FirstCountforTargetRange = RowIndexofLastday To 3 Step -2
With Range("A" & FirstCountforTargetRange, "G" & FirstCountforTargetRange)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 20
End With
Next FirstCountforTargetRange
For SecondCountforTargetRange = RowIndexofLastday + 1 To 4 Step -2
With Range("A" & SecondCountforTargetRange, "G" & SecondCountforTargetRange)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Font.Bold = True
.RowHeight = 50
.ColumnWidth = 12
End With
Next SecondCountforTargetRange
Set objRange = Range("A1", "G" & (RowIndexofLastday + 1))
With objRange.Borders
.Color = vbBlack
.Weight = xlThin
.LineStyle = xlContinuous
End With
ActiveWindow.DisplayGridlines = False
Cells(3, firstweekday).Offset(1, 0).Select
End Sub
Således är ett mycket ensamt makro. Men du kan använda den direkt. Och du behöver inte ändra det.
- Tryck sedan på knappen “F5” på tangentbordet.
- Ange datumet för den första dagen i popup-fönstret med formatet ”År / månad / dag”. "Dag" kan vara vilken dag som helst i denna månad, här kommer vi att mata in "1".
- Klicka sedan på knappen “OK”. Därefter kommer du tillbaka till redaktören. För att kontrollera resultatet kan du komma tillbaka till kalkylbladet.
Kalendern har redan dykt upp i kalkylbladet. Markören kommer att placeras vid den tomma cellen den första dagen.
Å andra sidan, om du inte är nöjd med cellformatet kan du också ändra koderna enligt dina önskemål. Med den här kalendern är du säker på att förbättra din arbetseffektivitet.
Excel är inte mindre benägen att misslyckas
Om du använder Excel ofta kommer det inte att vara svårt för dig att upptäcka att Excel alltid kommer att skadas. Most av tiden, avsluta Excel och sedan restardet kan lösa problemet. Ibland kommer du dock att möta allvarlig Excel-korruption. Och just nu kan du använda vårt kraftfulla verktyg för att reparera Excel xlsx datafel. Genom att använda detta verktyg kan almost alla fel kan enkelt lösas.
Författarintroduktion:
Anna Ma är en dataåterställningsexpert i DataNumen, Inc., som är världsledande inom teknik för återställning av data, inklusive reparera Word docx-fil och Outlook-programvara för reparationsprogramvara. För mer information besök www.datanumen.com

