Excel heeft een breed scala aan toepassingen. In dit artikel laten we u zien hoe u een kalender in een werkblad kunt maken met behulp van een macro.
Behalve voor het opslaan en analyseren van gegevens in uw Excel, kunt u het ook gebruiken om andere taken uit te voeren. U kunt bijvoorbeeld informatie verzamelen door gebruik te maken van Excel, of u kunt uw planning noteren in het werkblad. Vandaag hebben we een nieuw gebruik gevonden. U kunt een kalender maken in een werkblad. Het effect zie je in onderstaande afbeelding.
U kunt enkele taken in deze kalender invoeren. En de functie is hetzelfde als een memorandum. Door gebruik te maken van de Excel worden die taken overzichtelijker. Volg nu de stappen in het volgende deel en kijk hoe het werkt.
Maak een kalender
- Druk op de knop "Alt + F11" op het toetsenbord om het werkblad te openen.
- En voeg vervolgens een nieuwe module in de Visual Basic-editor in.
- Kopieer nu de volgende codes naar de nieuwe module:
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
Het is dus een zeer eenzame macro. Maar je kunt het direct gebruiken. En je hoeft het niet aan te passen.
- Druk vervolgens op de knop "F5" op het toetsenbord.
- Voer in het pop-upvenster de datum van de eerste dag in met het formaat "Jaar/Maand/Dag". De "Dag" kan elke dag in deze maand zijn, hier zullen we "1" invoeren.
- En klik vervolgens op de knop "OK". Vervolgens kom je terug bij de editor. Om het resultaat te controleren, kunt u teruggaan naar het werkblad.
De kalender is al in het werkblad verschenen. En de cursor wordt op de lege cel van de eerste dag geplaatst.
Aan de andere kant, als u niet tevreden bent met het formaat van de cellen, kunt u de codes ook aanpassen aan uw voorkeur. Met deze kalender verbetert u zeker uw werkefficiëntie.
Excel is niet minder vatbaar voor mislukkingen
Als u Excel regelmatig gebruikt, zult u ongetwijfeld merken dat Excel-bestanden regelmatig corrupt raken. Meestal lost het afsluiten en opnieuw opstarten van Excel dit probleem op. Soms kunt u echter te maken krijgen met ernstige corruptie van Excel-bestanden. In dat geval kunt u onze krachtige tool gebruiken om... reparatie Excel xlsx-gegevensfoutMet behulp van deze tool kunnen vrijwel alle fouten eenvoudig worden opgelost.
Auteur Introductie:
Anna Ma is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder repareer Word docx-bestand en Outlook-reparatiesoftwareproducten. Voor meer informatie bezoek www.datanumen.com

