Kalenterin luominen Excel-laskentataulukkoon VBA-komentosarjalla

Excelillä on laaja käyttöalue. Tässä artikkelissa näytämme, kuinka voit luoda kalenterin laskentataulukkoon makron avulla.

Lukuun ottamatta tietojen tallentamista ja analysointia Exceliin, voit käyttää niitä myös muiden tehtävien suorittamiseen. Voit esimerkiksi kerätä tietoja Excelin avulla tai voit merkitä suunnittelun muistiin taulukkoon. Tänään olemme löytäneet uuden käyttötavan. Voit luoda kalenterin laskentataulukossa. Näet vaikutuksen alla olevasta kuvasta.Kalenteri

Voit syöttää joitain tehtäviä tähän kalenteriin. Ja toiminto on sama kuin muistio. Excelin avulla nämä tehtävät ovat selkeämpiä. Seuraa nyt seuraavan osan vaiheita ja katso, miten se toimii.

Luo kalenteri

  1. Avaa laskentataulukko painamalla näppäimistön Alt + F11-näppäintä.
  2. Lisää sitten uusi moduuli Visual Basic -editoriin.
  3. Seuraavat koodit kopioidaan nyt uuteen moduuliin:
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

Siten on hyvin yksinäinen makro. Mutta voit käyttää sitä suoraan. Ja sinun ei tarvitse muokata sitä.

  1. Paina sitten näppäimistön painiketta “F5”.
  2. Kirjoita ponnahdusikkunaan ensimmäisen päivän päivämäärä muodossa "Vuosi / Kuukausi / Päivä". "Päivä" voi olla mikä tahansa päivä tässä kuussa, tässä syötämme "1".Syöttöpäivä
  3. Napsauta sitten painiketta "OK". Seuraavaksi palaat editoriin. Tuloksen tarkistamiseksi voit palata laskentataulukkoon.

Kalenteri on jo ilmestynyt laskentataulukkoon. Ja kohdistin sijoitetaan ensimmäisen päivän tyhjään soluun.Tulos

Toisaalta, jos et ole tyytyväinen solumuotoon, voit myös muokata koodeja mieltymystesi mukaan. Tämän kalenterin avulla parannat varmasti työsi tehokkuutta.

Excel ei ole vähemmän altis epäonnistumiselle

Jos käytät Exceliä usein, ei ole vaikea huomata, että Excel vioittuu aina. Useimmiten Excelin sulkeminen ja uudelleenkäynnistäminen voi ratkaista ongelman. Joskus kuitenkin kohtaat vakavia Excel-vioittumisongelmia. Ja tällä hetkellä voit käyttää tehokasta työkaluamme... korjaa Excel xlsx -tietovirheTämän työkalun avulla lähes kaikki virheet voidaan ratkaista helposti.

Tekijän esittely:

Anna Ma on tietojen palauttamisen asiantuntija DataNumen, Inc., joka on maailman johtava tietojen palautustekniikoissa, mukaan lukien korjaa Word docx-tiedosto ja Outlookin korjausohjelmistotuotteet. Lisätietoja osoitteessa www.datanumen.com

Kommenttien lisääminen on estetty.