Kako ustvariti koledar v Excelovem delovnem listu s skriptom VBA

Skupna raba zdaj:

Excel ima širok spekter uporabe. V tem članku vam bomo pokazali, kako ustvarite koledar na delovnem listu z uporabo makra.

Razen za shranjevanje in analiziranje podatkov v vašem Excelu, ga lahko uporabite tudi za dokončanje drugih nalog. Informacije lahko na primer zbirate z uporabo Excela ali pa si svoje načrtovanje zapišete v delovni list. Danes smo našli novo uporabo. Na delovnem listu lahko ustvarite koledar. Učinek si lahko ogledate na spodnji sliki.Koledar

V ta koledar lahko vnesete nekaj nalog. In funkcija je enaka memorandumu. Z uporabo Excela bodo te naloge jasnejše. Zdaj sledite korakom v naslednjem delu in si oglejte, kako deluje.

Ustvari koledar

  1. Pritisnite gumb “Alt +F11” na tipkovnici, da odprete delovni list.
  2. In nato vstavite nov modul v urejevalnik Visual Basic.
  3. Zdaj kopirajte naslednje kode v nov modul:
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

Tako je zelo osamljen makro. Lahko pa ga neposredno uporabite. In ni vam ga treba spreminjati.

  1. Nato pritisnite gumb "F5" na tipkovnici.
  2. V pojavnem oknu vnesite datum prvega dne v obliki »Leto/Mesec/Dan«. »Dan« je lahko kateri koli dan v tem mesecu, tukaj bomo vnesli »1«.Datum vnosa
  3. In nato kliknite gumb "V redu". Nato se boste vrnili v urejevalnik. Če želite preveriti rezultat, se lahko vrnete na delovni list.

Koledar se je že pojavil v delovnem listu. In kazalec bo postavljen na prazno celico prvega dne.Rezultat

Po drugi strani pa lahko, če niste zadovoljni s formatom celic, spremenite kode po svojih željah. S tem koledarjem boste zagotovo izboljšali svojo delovno učinkovitost.

Excel ni manj nagnjen k napakam

Če pogosto uporabljate Excel, vam ne bo težko ugotoviti, da se Excel vedno poškoduje. Večinoma lahko težavo rešite tako, da zaprete Excel in ga nato znova zaženete. Včasih pa se boste srečali s hudo poškodbo Excela. In v tem trenutku lahko uporabite naše zmogljivo orodje za popravi podatkovno napako Excel xlxZ uporabo tega orodja je mogoče skoraj vse napake enostavno odpraviti.

Uvod avtorja:

Anna Ma je ​​strokovnjakinja za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popravi datoteko Word docx in obeti za popravilo programskih izdelkov. Za več informacij obiščite www.datanumen.com

Skupna raba zdaj:

Komentarji so zaprti.