如何使用VBA腳本在Excel工作表中創建日曆

立即分享:

Excel具有廣泛的用途。 在本文中,我們將向您展示如何使用宏在工作表中創建日曆。

除了在Excel中存儲和分析數據外,您還可以使用它來完成其他任務。 例如,您可以使用Excel來收集信息,也可以在工作表中記下您的計劃。 今天,我們發現了一種新用法。 您可以在工作表中創建日曆。 您可以在下圖中看到效果。日曆

您可以在此日曆中輸入一些任務。 其功能與備忘錄相同。 通過使用Excel,這些任務將更加清晰。 現在,按照以下部分中的步驟操作,並查看其工作原理。

創建日曆

  1. 按下鍵盤上的“ Alt + F11”按鈕以打開工作表。
  2. 然後在Visual Basic編輯器中插入一個新模塊。
  3. 現在將以下代碼複製到新模塊中:
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

因此是一個非常孤獨的宏。 但是您可以直接使用它。 而且您不需要修改它。

  1. 然後按鍵盤上的“ F5”按鈕。
  2. 在彈出的窗口中,以“年/月/日”的格式輸入第一天的日期。 “日”可以是本月中的任何一天,在這裡我們將輸入“ 1”。輸入日期
  3. 然後單擊“確定”按鈕。 接下來,您將回到編輯器。 為了檢查結果,您可以返回工作表。

日曆已經出現在工作表中。 並且光標將位於第一天的空白單元格上。結果

另一方面,如果您對單元格格式不滿意,也可以根據自己的喜好修改代碼。 使用此日曆,您一定會提高工作效率。

Excel不太容易失敗

如果您經常使用 Excel,很容易發現 Excel 經常出現檔案損壞的情況。大多數情況下,退出 Excel 然後重新啟動即可解決問題。但是,有時您會遇到嚴重的文件損壞。這時,您可以使用我們強大的工具來修復 Excel 檔案。 修復Excel xlsx數據錯誤使用此工具,幾乎所有錯誤都能輕鬆解決。

作者簡介:

Anna Ma是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復Word docx文件 和Outlook修復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。