制作指定月份的日历


使用这段代码,可以在 PPT 中快速生成指定年份和月份的日历。

使用方法:

先新建一页带有标题占位符的页面,在里面插入一个 7X7 的表格。

如下图所示,表格第一行设置好周一到周日,并修改标题占位符与表格的样式。

设置完成后打开代码编辑器,粘贴下方的代码。

代码如下:

  1. Sub 生成日历()
  2. Dim lngY As Long
  3. Dim lngM As Long
  4. Dim firstDay As Long
  5. Dim lngDayCNT As Long
  6. Dim lastDay As Long
  7. Dim lngDay As Long
  8. Dim lngCount As Long
  9. Dim X As Long
  10. Dim L As Long
  11. Dim osld As Slide
  12. Dim otbl As Table
  13. Dim LR As Long
  14. Dim LC As Long
  15. Dim rayDays(1 To 42) As String
  16. Const StartDay As Long = vbMonday
  17. On Error Resume Next
  18. Set otbl = ActiveWindow.Selection.ShapeRange(1).Table
  19. If otbl Is Nothing Then
  20. MsgBox "Select a table", vbCritical
  21. Exit Sub
  22. End If
  23. '获取年份以及月份'
  24. lngY = InputBox("输入日历年份")
  25. If Not IsNumeric(lngY) Then Exit Sub
  26. lngM = InputBox("输入日历月份(阿拉伯数字,比如 5 )")
  27. If Not IsNumeric(lngM) Then Exit Sub
  28. If lngM < 1 Or lngM > 12 Then Exit Sub
  29. ' Find day of week for 1st of month '
  30. firstDay = Weekday(DateSerial(lngY, lngM, 1), StartDay)
  31. ' Find number of days in month '
  32. lngDayCNT = Day(DateSerial(lngY, lngM + 1, 1) - 1)
  33. ' find day of week for last day '
  34. lastDay = lngDayCNT + firstDay - 1
  35. 'add only used days to array '
  36. For L = firstDay To lastDay
  37. lngDay = lngDay + 1
  38. rayDays(L) = lngDay
  39. Next L
  40. ' fill in Table omit header row '
  41. For LR = 2 To 7
  42. For LC = 1 To 7
  43. X = X + 1
  44. otbl.Cell(LR, LC).Shape.TextFrame.TextRange = CStr(rayDays(X))
  45. otbl.Cell(LR, LC).Shape.TextFrame.TextRange.Font.Size = 18
  46. Next
  47. Next
  48. Set osld = ActiveWindow.Selection.SlideRange(1)
  49. osld.Shapes.Title.TextFrame.TextRange = lngY & "年" & MonthName(lngM)
  50. End Sub

最后回到普通视图,选中表格,运行宏生成日历,输入对应的年份以及月份,即可在表格中自动生成对应的日历。

生成的日历效果如下图:


音律 2022年5月17日 11:25 0 条评论 收藏文档
评论

暂无评论,我来发表第一篇评论!

发表评论