Kuidas luua oma Exceli töölehel VBA skriptiga kalendrit

Excelil on lai kasutusala. Selles artiklis näitame teile, kuidas makro abil kalendrit töölehel luua.

Välja arvatud andmete salvestamiseks ja analüüsimiseks Excelis, saate seda kasutada ka muude toimingute tegemiseks. Näiteks saate koguda teavet Exceli abil või märkida oma plaanid töölehel. Täna oleme leidnud uue kasutuse. Saate luua kalendri töölehel. Efekti näete alloleval pildil.kalender

Saate sellesse kalendrisse sisestada mõned ülesanded. Ja funktsioon on sama, mis memorandumil. Exceli kasutamisel on need ülesanded selgemad. Nüüd järgige järgmises osas toodud samme ja vaadake, kuidas see töötab.

Looge kalender

  1. Töölehe avamiseks vajutage klaviatuuril nuppu "Alt + F11".
  2. Seejärel sisestage Visual Basicu redaktorisse uus moodul.
  3. Nüüd kopeerige uude moodulisse järgmised koodid:
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

Seega on tegemist väga üksiku makroga. Kuid saate seda otse kasutada. Ja te ei pea seda muutma.

  1. Seejärel vajutage klaviatuuril nuppu "F5".
  2. Sisestage hüpikaknas esimese päeva kuupäev vormingus “Aasta/kuu/päev”. "Päev" võib olla selle kuu mis tahes päev, siin sisestame "1".Sisestamise kuupäev
  3. Ja seejärel klõpsake nuppu "OK". Järgmisena naasete toimetaja juurde. Tulemuse kontrollimiseks võite naasta töölehel.

Kalender on töölehel juba ilmunud. Ja kursor asetatakse esimese päeva tühja lahtrisse.Tulemus

Teisest küljest, kui te ei ole lahtrite vorminguga rahul, saate koode ka vastavalt oma eelistustele muuta. Selle kalendri abil parandate kindlasti oma töö efektiivsust.

Excel ei ole vähem altid ebaõnnestumistele

Kui kasutate Exceli sageli, pole teil raske avastada, et Excel rikneb pidevalt. Enamasti lahendab probleemi Exceli sulgemine ja taaskäivitamine. Mõnikord võib aga Exceli andmete tõsine riknemine aset leida. Ja sel hetkel saate kasutada meie võimsat tööriista, et... Exceli xlsx andmevea parandamineSelle tööriista abil saab peaaegu kõiki vigu hõlpsalt lahendada.

Autori sissejuhatus:

Anna Ma on andmete taastamise ekspert DataNumen, Inc., mis on maailmas juhtiv andmete taastamise tehnoloogiate, sealhulgas parandage Wordi docx-fail ja Outlooki remonditarkvaratooted. Lisateabe saamiseks külastage www.datanumenCom

Kommentaarid on suletud.