去评论
推扬网

范诗然:求VB中万年历的算法

admin
2020/08/12 12:48:45

迗迗想伱的回答:

代码如下:

Private Sub Command1_Click() Cls x = Text1.Text y = Text2.Text If Text1 = "" Or Text2 = "" Then Text1.SetFocus MsgBox "请输入完整数据!" GoTo a1 End If

Select Case x Case 100 To 9999 GoTo a2 Case Else MsgBox "你所输入的年份不合法,请重新输入!" GoTo a1 End Select

a2:

Select Case y Case 1 To 12 GoTo a3 Case Else MsgBox "你所输入的月份不合法,请重新输入!" GoTo a1 End Select

a3:

If y < 12 Then Label1.Caption = Str(x) + "年" + Str((y)) + "月的月历为:" z = DateDiff("d", Str(x) + "-" & Str(y) + "-1", Str(x) + "-" + Str(y + 1) & "-1") Else Label1.Caption = x + "年" + y + "月的月历为:" z = DateDiff("d", Str(x) + "-" & Str(y) + "-1", Str(x + 1) + "-" + Str((y + 1) Mod 12) & "-1") End If CurrentY = 250 Print "SUN", "MOD", "TUE", "WED", "THU", "FRI", "SAT" a = Weekday(Str(x) + "-" + Str(y) + "-1")

Select Case a

Case 1 For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 2 t = 1 Print , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 3 t = 2 Print , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 4 t = 3 Print , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 5 t = 4 Print , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 6 t = 5 Print , , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 7 t = 6 Print , , , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If

Next

End Select a1: End Sub

附图:

时间是100---9999年之间!谢谢采纳!

迗迗想伱的回答:

代码如下:

Private Sub Command1_Click() Cls x = Text1.Text y = Text2.Text If Text1 = "" Or Text2 = "" Then Text1.SetFocus MsgBox "请输入完整数据!" GoTo a1 End If

Select Case x Case 100 To 9999 GoTo a2 Case Else MsgBox "你所输入的年份不合法,请重新输入!" GoTo a1 End Select

a2:

Select Case y Case 1 To 12 GoTo a3 Case Else MsgBox "你所输入的月份不合法,请重新输入!" GoTo a1 End Select

a3:

If y < 12 Then Label1.Caption = Str(x) + "年" + Str((y)) + "月的月历为:" z = DateDiff("d", Str(x) + "-" & Str(y) + "-1", Str(x) + "-" + Str(y + 1) & "-1") Else Label1.Caption = x + "年" + y + "月的月历为:" z = DateDiff("d", Str(x) + "-" & Str(y) + "-1", Str(x + 1) + "-" + Str((y + 1) Mod 12) & "-1") End If CurrentY = 250 Print "SUN", "MOD", "TUE", "WED", "THU", "FRI", "SAT" a = Weekday(Str(x) + "-" + Str(y) + "-1")

Select Case a

Case 1 For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 2 t = 1 Print , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 3 t = 2 Print , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 4 t = 3 Print , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 5 t = 4 Print , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 6 t = 5 Print , , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If Next

Case 7 t = 6 Print , , , , , , For i = 1 To z t = t + 1 If Day(Now) = i Then ForeColor = vbRed Print i, Else ForeColor = vbBlack Print i, End If If t Mod 7 = 0 Then Print End If

Next

End Select a1: End Sub

附图:

时间是100---9999年之间!谢谢采纳!