Kaip sukurti kalendorių „Excel“ darbalapyje naudojant VBA scenarijų

Bendrinti dabar:

„Excel“ turi platų naudojimo spektrą. Šiame straipsnyje parodysime, kaip sukurti kalendorių darbalapyje naudojant makrokomandą.

Išskyrus duomenų saugojimą ir analizavimą „Excel“, galite jį naudoti ir kitoms užduotims atlikti. Pavyzdžiui, galite rinkti informaciją naudodami „Excel“ arba galite užsirašyti savo planus darbalapyje. Šiandien radome naują naudojimo būdą. Galite sukurti kalendorių darbalapyje. Žemiau esančiame paveikslėlyje galite pamatyti efektą.kalendorius

Kai kurias užduotis galite įvesti į šį kalendorių. O funkcija tokia pati kaip memorandumo. Naudojant Excel, šios užduotys bus aiškesnės. Dabar atlikite tolesnėje dalyje nurodytus veiksmus ir pažiūrėkite, kaip tai veikia.

Sukurkite kalendorių

  1. Norėdami atidaryti darbalapį, klaviatūroje paspauskite mygtuką „Alt + F11“.
  2. Tada į Visual Basic redaktorių įdėkite naują modulį.
  3. Dabar nukopijuokite šiuos kodus į naują 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

Taigi tai labai vieniša makrokomanda. Bet jūs galite jį naudoti tiesiogiai. Ir jums nereikia jo keisti.

  1. Tada paspauskite klaviatūros mygtuką „F5“.
  2. Iššokančiajame lange įveskite pirmosios dienos datą formatu „Metai/mėnuo/diena“. „Diena“ gali būti bet kuri šio mėnesio diena, čia įvesime „1“.Įvesties data
  3. Ir tada spustelėkite mygtuką „Gerai“. Tada grįšite į redaktorių. Norėdami patikrinti rezultatą, galite grįžti į darbalapį.

Kalendorius jau pasirodė darbalapyje. Ir žymeklis bus pastatytas ant tuščios pirmosios dienos langelio.Pasekmė

Kita vertus, jei nesate patenkinti langelių formatu, kodus taip pat galite keisti pagal savo pageidavimus. Naudodami šį kalendorių tikrai pagerinsite savo darbo efektyvumą.

„Excel“ nėra mažiau linkęs į nesėkmes

Jei dažnai naudojate „Excel“, nesunku pastebėti, kad programa „Excel“ visada sugenda. Dažniausiai problemą galima išspręsti uždarius „Excel“ ir paleidus iš naujo. Tačiau kartais galite susidurti su rimta „Excel“ klaida. Tokiu atveju galite naudoti mūsų galingą įrankį, kad... pataisyti Excel xlsx duomenų klaidąNaudojant šį įrankį, beveik visas klaidas galima lengvai išspręsti.

Autoriaus įvadas:

Anna Ma yra duomenų atkūrimo ekspertė DataNumen, Inc., kuri yra pasaulyje duomenų atkūrimo technologijų lyderė, įskaitant pataisyti Word docx failą ir „Outlook“ taisymo programinės įrangos produktai. Norėdami gauti daugiau informacijos, apsilankykite WWW.datanumen.com

Bendrinti dabar:

Komentarai yra uždaryti.