KutoolsforOffice — 一套方案,五大工具。事半功倍。

如何在 Excel 中轻松创建专属日历?

作者技术支持修改日期

Excel 日历可助您轻松追踪重要事件,例如某人入职新工作的日期或某项任务的交付时间,让关键日期一目了然、清晰明了。在本指南中,我将为您演示如何在 Excel 中创建月度与年度日历——既包括使用模板快速搭建的方法,也涵盖从零开始手动构建的方式,满足希望掌握更多自定义控制权的用户需求。无论用于工作安排还是个人规划,您都能时刻保持井然有序。

创建日历

使用 Excel 日历模板创建年度日历

使用 Kutools for Excel 快速创建月度或年度日历

使用 VBA 代码创建月度日历


使用 Excel 日历模板创建年度日历

使用此方法时,您必须确保计算机已连接网络,以便下载日历模板

1. 转到文件选项卡,单击左侧窗格中的新建按钮,然后从日历中选择建议的搜索。参见截图:

单击新建按钮,然后单击日历

2. 选择您心仪的日历模板,双击即可轻松创建年度日历。

选择一个日历模板

结果

日历已插入


使用 Kutools for Excel 快速创建月度或年度日历

Kutools for Excel永久日历工具可快速创建自定义的月历或年历,且每个月历都将包含在一个新工作表中。

Kutools for Excel 提供 300 多项高级功能,简化复杂任务,提升创造力与效率。结合 AI 能力,Kutools 能精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

安装 Kutools for Excel 后,请单击 KUTOOLS PLUS > 工作表 > 永久日历。在弹出的永久日历对话框中,请按以下步骤操作:

  • 要创建月度日历,请通过下拉列表指定日历月份,然后单击创建

指定月份以创建月度日历

  • 要创建年度日历,请通过下拉列表指定日历年份,然后单击创建

指定年份以创建年度日历

结果
  • 月度日历:

已插入月度日历

  • 年度日历:

已插入年度日历

提示:要使用此功能,您需先安装 Kutools for Excel,请点击此处下载并立即开始 30 天免费试用

使用 VBA 代码创建月度日历

使用以下 VBA 代码,您可快速创建月度日历。请按以下步骤操作:

1. 按下 Alt+F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。

2. 将弹出一个新窗口。单击插入 > 模块,然后在模块中输入以下代码:

 Sub CalendarMaker()
ActiveSheet.Protect DrawingObjects:=False, Contents:=False, _
Scenarios:=False
Application.ScreenUpdating = False
On Error GoTo MyErrorTrap
Range("a1:g14").Clear
MyInput = InputBox("Type in Month and year for Calendar ")
If MyInput = "" Then Exit Sub
StartDay = DateValue(MyInput)
If Day(StartDay) <> 1 Then
StartDay = DateValue(Month(StartDay) & "/1/" & _
Year(StartDay))
End If
Range("a1").NumberFormat = "mmmm yyyy"
With Range("a1:g1")
.HorizontalAlignment = xlCenterAcrossSelection
.VerticalAlignment = xlCenter
.Font.Size = 18
.Font.Bold = True
.RowHeight = 35
End With
With Range("a2:g2")
.ColumnWidth = 11
.VerticalAlignment = xlCenter
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Orientation = xlHorizontal
.Font.Size = 12
.Font.Bold = True
.RowHeight = 20
End With
Range("a2") = "Sunday"
Range("b2") = "Monday"
Range("c2") = "Tuesday"
Range("d2") = "Wednesday"
Range("e2") = "Thursday"
Range("f2") = "Friday"
Range("g2") = "Saturday"
With Range("a3:g8")
.HorizontalAlignment = xlRight
.VerticalAlignment = xlTop
.Font.Size = 18
.Font.Bold = True
.RowHeight = 21
End With
Range("a1").Value = Application.Text(MyInput, "mmmm yyyy")
DayofWeek = Weekday(StartDay)
CurYear = Year(StartDay)
CurMonth = Month(StartDay)
FinalDay = DateSerial(CurYear, CurMonth + 1, 1)
Select Case DayofWeek
Case 1
Range("a3").Value = 1
Case 2
Range("b3").Value = 1
Case 3
Range("c3").Value = 1
Case 4
Range("d3").Value = 1
Case 5
Range("e3").Value = 1
Case 6
Range("f3").Value = 1
Case 7
Range("g3").Value = 1
End Select
For Each cell In Range("a3:g8")
RowCell = cell.Row
ColCell = cell.Column
If cell.Column = 1 And cell.Row = 3 Then
ElseIf cell.Column <> 1 Then
If cell.Offset(0, -1).Value >= 1 Then
cell.Value = cell.Offset(0, -1).Value + 1
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
Exit For
End If
End If
ElseIf cell.Row > 3 And cell.Column = 1 Then
cell.Value = cell.Offset(-1, 6).Value + 1
If cell.Value > (FinalDay - StartDay) Then
cell.Value = ""
Exit For
End If
End If
Next
For x = 0 To 5
Range("A4").Offset(x * 2, 0).EntireRow.Insert
With Range("A4:G4").Offset(x * 2, 0)
.RowHeight = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlTop
.WrapText = True
.Font.Size = 10
.Font.Bold = False
.Locked = False
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlLeft)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Range("A3").Offset(x * 2, 0).Resize(2, _
7).Borders(xlRight)
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
Range("A3").Offset(x * 2, 0).Resize(2, 7).BorderAround _
Weight:=xlThick, ColorIndex:=xlAutomatic
Next
If Range("A13").Value = "" Then Range("A13").Offset(0, 0) _
.Resize(2, 8).EntireRow.Delete
ActiveWindow.DisplayGridlines = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, _
Scenarios:=True
ActiveWindow.WindowState = xlMaximized
ActiveWindow.ScrollRow = 1
Application.ScreenUpdating = True
Exit Sub
MyErrorTrap:
MsgBox "You may not have entered your Month and Year correctly." _
& Chr(13) & "Spell the Month correctly" _
& " (or use 3 letter abbreviation)" _
& Chr(13) & "and 4 digits for the Year"
MyInput = InputBox("Type in Month and year for Calendar")
If MyInput = "" Then Exit Sub
Resume
End Sub 

3. 然后点击运行按钮或按 F5 键运行程序,此时将弹出提示框,您可在空白框中输入月份和年份。

在文本框中输入月份和年份

结果

已插入月度日历