加入模块:
Sub zxl_input_year()
y = InputBox("input year :")
Range("1:1,4:11,14:21,24:31,34:41").ClearContents '清除原有内容
Cells(1, 1) = y & "年历" '设置标题
Dim dm As Variant '存放每个月的天数到数组dm(下标从0开始)
dm = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
If ((y Mod 400 = 0) Or (y Mod 4 = 0 And y Mod 100 <> 0)) Then '判断闰年
dm(1) = 29
End If
For m = 0 To 11
d = DateSerial(y, m + 1, 1) '计算每月第一天的星期数(1日,2一,3二,4三,5四,6五,7六)
w = Weekday(d)
r = (m \ 3) * 10 + 4 '计算每月起始的行号和列号
c = (m Mod 3) * 8
For d = 1 To dm(m) '排出一个月日期
Cells(r, c + w) = d
w = w + 1
If w > 7 Then
w = 1
r = r + 1
End If
Next
Next
End Sub