去年的作业,写的挺冗长。im表示大行数;n表示每月固定天数;d表示天数;p表示星期几;k表示小行数
Private Sub Command1_Click()
Dim yyyy As Integer
Dim p As Integer
Dim s As String
Dim im As Integer
Dim j As Integer
Dim i As Integer
Dim k As Integer
Dim n1 As Integer
Dim n2 As Integer
Dim n3 As Integer
Dim d1 As Integer
Dim d2 As Integer
Dim d3 As Integer
Dim p0 As Integer
Dim p1 As Integer
Dim p2 As Integer
Dim k0 As Integer
Dim k1 As Integer
Dim k2 As Integer
Dim k3 As Integer
yyyy = InputBox("请输入年份", "年份输入", "2021")
p = InputBox("请输入元旦星期几", "星期输入", "6")
s = "日一二三四五六"
For im = 1 To 4
For j = 1 To 3
Print Tab(35 * j); im * 3 - 3 + j; "月";
Next j
Print
Print
For j = 1 To 3
For i = 0 To 6
Print Tab(30 * j + i * 4); Mid(s, i + 1, 1);
Next i
Next j
Select Case im * 3
Case 3, 12
n3 = 31
Case 6, 9
n3 = 30
End Select
Select Case im * 3 - 1
Case 5, 8
n2 = 31
Case 11
n2 = 30
Case 2
If yyyy Mod 4 = 0 And yyyy Mod 100 <> 0 Or yyyy Mod 400 = 0 Then
n2 = 29
Else
n2 = 28
End If
End Select
Select Case im * 3 - 2
Case 1, 7, 10
n1 = 31
Case 4
n1 = 30
End Select
p1 = (n1 + p) Mod 7
p2 = (n2 + p1) Mod 7
p0 = p2
d1 = 1
d2 = 1
d3 = 1
For k0 = 1 To 6
For k1 = p To 6
If d1 <= n1 Then
Print Tab(30 + k1 * 4); d1;
d1 = d1 + 1
p = p + 1
End If
Next k1
If p > 6 Then p = 0
For k2 = p1 To 6
If d2 <= n2 Then
Print Tab(60 + k2 * 4); d2;
d2 = d2 + 1
p1 = p1 + 1
End If
Next k2
If p1 > 6 Then p1 = 0
For k3 = p2 To 6
If d3 <= n3 Then
Print Tab(90 + k3 * 4); d3;
d3 = d3 + 1
p2 = p2 + 1
End If
Next k3
If p2 > 6 Then p2 = 0
Print
Next k0
p = (n3 + p0) Mod 7
Print
Print
Next im
End Sub
最终效果