Excel 的用途非常广泛。 在本文中,我们将向您展示如何使用宏在工作表中创建日历。
除了在 Excel 中存储和分析数据外,您还可以使用它来完成其他任务。 例如,您可以使用 Excel 收集信息,也可以在工作表中记下您的计划。 今天我们发现了一个新的用法。 您可以在工作表中创建日历。 您可以在下图中看到效果。
您可以将一些任务输入到这个日历中。 功能与备忘录相同。 通过使用 Excel,这些任务将更加清晰。 现在按照以下部分中的步骤进行操作,看看它是如何工作的。
创建日历
- 按键盘上的“Alt +F11”按钮打开工作表。
- 然后在 Visual Basic 编辑器中插入一个新模块。
- 现在将以下代码复制到新模块中:
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
因此是一个非常孤独的宏。 但是你可以直接使用它。 而且你不需要修改它。
- 然后按下键盘上的“F5”键。
- 在弹出的窗口中输入第一天的日期,格式为“年/月/日”。 “日”可以是这个月的任何一天,这里我们输入“1”。
- 然后单击“确定”按钮。 接下来您将回到编辑器。 为了检查结果,您可以返回工作表。
日历已经出现在工作表中。 并且光标会定位到第一天的空白单元格。
另一方面,如果您对单元格格式不满意,您也可以根据自己的喜好修改代码。 使用此日历,您一定会提高工作效率。
Excel 不太容易出错
如果您经常使用 Excel,很容易发现 Excel 经常出现文件损坏的情况。大多数情况下,退出 Excel 然后重新启动即可解决问题。但是,有时您会遇到严重的文件损坏。这时,您可以使用我们强大的工具来修复 Excel 文件。 修复Excel xlsx数据错误使用此工具,几乎所有错误都能轻松解决。
作者简介:
Anna Ma 是一位数据恢复专家 DataNumen, Inc.,它是数据恢复技术领域的世界领先者,包括 修复Word docx文件 和 outlook 修复软件产品。 欲了解更多信息,请访问 datanumen.com


