看到C#那边出了一个打印本月月历的题目,就打算用vb实现下。帖子具体地址:
http://topic.youkuaiyun.com/u/20110630/19/743bdaf7-ed26-47c3-a02d-6ed9fa58f0f4.html
因为vb里没有什么linq,所以就用纯字符串操作了,代码如下:
Private Sub Form_Load()
Dim s$, i%, strDatePre$, d1 As Date
strDatePre = DatePart("yyyy", Now) & "-" & DatePart("m", Now) & "-"
s = "SU MO TU WE TH FR SA" & vbCrLf
Do
i = i + 1
d1 = strDatePre & i
If i = 1 Then s = s & Space((DatePart("w", d1) - 1) * 3)
s = s & Space(2 - Len(CStr(i))) & i & " "
If DatePart("w", d1) = 7 Then s = s & vbCrLf
If DatePart("d", d1 + 1) = 1 Then Exit Do
Loop
MsgBox s
End Sub
输出结果:
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
稍稍修改了下,使得程序可以打印全年的,代码如下:
Private Sub Form_Load()
Dim s$, i%, intMonth%, strDatePre$, d1 As Date
For intMonth = 1 To 12
strDatePre = DatePart("yyyy", Now) & "-" & intMonth & "-"
s = DatePart("yyyy", Now) & "年" & intMonth & "月" & vbCrLf & "SU MO TU WE TH FR SA" & vbCrLf
i = 0
Do
i = i + 1
d1 = strDatePre & i
If i = 1 Then s = s & Space((DatePart("w", d1) - 1) * 3)
s = s & Space(2 - Len(CStr(i))) & i & " "
If DatePart("d", d1 + 1) = 1 Then Exit Do Else If DatePart("w", d1) = 7 Then s = s & vbCrLf
Loop
Debug.Print s & vbCrLf
Next
End Sub
输出结果为:
2013年1月
SU MO TU WE TH FR SA
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
2013年2月
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28
2013年3月
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
2013年4月
SU MO TU WE TH FR SA
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
2013年5月
SU MO TU WE TH FR SA
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
2013年6月
SU MO TU WE TH FR SA
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
2013年7月
SU MO TU WE TH FR SA
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
2013年8月
SU MO TU WE TH FR SA
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
2013年9月
SU MO TU WE TH FR SA
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
2013年10月
SU MO TU WE TH FR SA
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
2013年11月
SU MO TU WE TH FR SA
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
2013年12月
SU MO TU WE TH FR SA
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31