Hvordan lage en kalender i Excel-regnearket med VBA-skript

Excel har et bredt spekter av bruk. I denne artikkelen vil vi vise deg hvordan du lager en kalender i et regneark ved å bruke en makro.

Bortsett fra å lagre og analysere data i Excel, kan du også bruke den til å fullføre andre oppgaver. Du kan for eksempel samle informasjon ved å bruke Excel, eller du kan notere ned planleggingen i arbeidsarket. I dag har vi funnet en ny bruk. Du kan lage en kalender i et regneark. Du kan se effekten på bildet nedenfor.Kalender

Du kan legge inn noen oppgaver i denne kalenderen. Og funksjonen er den samme som et notat. Ved å bruke Excel vil disse oppgavene bli klarere. Følg nå trinnene i den følgende delen og se hvordan det fungerer.

Lag en kalender

  1. Trykk på knappen "Alt + F11" på tastaturet for å åpne regnearket.
  2. Og sett inn en ny modul i Visual Basic-editoren.
  3. Kopier nå følgende koder inn i den nye 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

Dermed er en veldig ensom makro. Men du kan bruke den direkte. Og du trenger ikke å endre den.

  1. Trykk deretter på knappen "F5" på tastaturet.
  2. I popup-vinduet skriver du inn datoen for den første dagen med formatet "År/måned/dag". "Dagen" kan være hvilken som helst dag i denne måneden, her vil vi legge inn "1".Inndatadato
  3. Og klikk deretter på knappen "OK". Deretter kommer du tilbake til redaktøren. For å sjekke resultatet kan du gå tilbake til arbeidsarket.

Kalenderen har allerede dukket opp i regnearket. Og markøren vil bli plassert ved den tomme cellen den første dagen.Resultat

På den annen side, hvis du ikke er fornøyd med celleformatet, kan du også endre kodene i henhold til dine preferanser. Med denne kalenderen vil du garantert forbedre arbeidseffektiviteten.

Excel er ikke mindre utsatt for feil

Hvis du bruker Excel ofte, vil det ikke være vanskelig for deg å finne ut at Excel alltid vil skade. Most av tiden, avslutt Excel og deretter restart det kan løse problemet. Noen ganger vil du imidlertid møte alvorlig Excel-korrupsjon. Og i dette øyeblikket kan du bruke vårt kraftige verktøy for å reparer Excel xlsx datafeil. Ved å bruke dette verktøyet kan almost alle feilene kan løses enkelt.

Forfatterintroduksjon:

Anna Ma er en datagjenopprettingsekspert innen DataNumen, Inc., som er verdensledende innen datagjenopprettingsteknologier, inkludert reparere Word docx-fil og Outlook-reparasjonsprodukter. For mer informasjon besøk www.datanumen. Med

Kommentarer er stengt.