1. 求用vb做萬年歷 要求輸入一個日期 得到星期節日星座節氣
分數太少了,呵呵,呵呵
另外的農歷,是更好地做
用的printf列印功能目錄,切換來完成調用子函數很多次了,再加上大循環
日歷顯示,這是相對簡單的,是計算的一年的第一天是星期可以
原則:第1年1月1日(星期一),計算這天的第一天,年1月1日,1的AD,除以7的中間的,其餘的是周。一年365天,364正好是7的倍數,那麼一年更比一天,閏年加一天。還有一個更簡單,僅有400年是一個輪回,400 +97 = 497多
您輸入的一年,除以400,計算,然後在今年剩下的天數計算量會小很多
所以在今年的第一天是星期計算
最好做的一個子功能來實現這一功能,返回值是今年的幾個星期的第一天,後者可用於
下一個列印子功能是一個不錯的選擇,
設置一個全局數組包含該月的天數來確定一個,如果在2月的天數 BR />這里有一個技巧,就是設定一個變數來保存每月的最後一天,一周,因為它是連續的,所以在下個月的第一天是星期幾被很好地定義,是列印幾個空格發生這個變數的值,哦
日期星期有幾個還不錯的事,知道在今年的第一天,然後是一周的第一天的日期,今年的差一些美好的一天,使用for循環,可以計算出
農歷這做的不好,你可以看看網路,一種子功能,您可以參考 a>
後面兩個函數,讀取和寫入文件,很簡單,套用固定格式的文件可以變化不大,
2. 用VB語言編寫 根據用戶輸入一個出生日期,算出其所屬的星座和生肖,不要拖放控制項,直接編寫
是求年的生肖還是月\日\時的?
3. 用VB語言在EXCEL中編寫通過出生年月日判斷星座 急求!
其實最簡單的思路應該是將生日(比如在A1)中的年份信息去掉(全部統一為1900年,用函數date(0,month(A1),day(A1)),再與星座分割日(比如水瓶座1月20日為20,雙魚座2月19日為49等)做大小比對。以前網上很多一句語句查星座的都是這個思路。
但這個方法有個隱蔽的bug:閏年。閏年裡面的星座分割日在3月份之後要加1。隱蔽的bug是大忌!如果別人調用了你的函數,卻總是有無規律的錯誤發生,有時絞盡腦汁找不出問題的所在,往往就是因為你函數中這種隱蔽的bug了。
為了繞過閏年的bug,我編寫了下面的函數,直接仿造人肉查詢月、日的過程。
當然,裡面有可以優化的地方,比如月份的數組由於維數和內容一樣,可以直接優化掉;比如最後的if語句結構可以用一個iif語句代替。但這些都是細枝末節,為了更好地體現編程思路,就不做這些「匠心」的優化了。
Function HOROSCOPE(x As Date) As String
Dim XZ(12) As String
Dim Yue(12) As Long
Dim Ri(12) As Long
XZ(0) = "摩羯座"
XZ(1) = "水瓶座"
XZ(2) = "雙魚座"
XZ(3) = "白羊座"
XZ(4) = "金牛座"
XZ(5) = "雙子座"
XZ(6) = "巨蟹座"
XZ(7) = "獅子座"
XZ(8) = "處女座"
XZ(9) = "天秤座"
XZ(10) = "天蠍座"
XZ(11) = "射手座"
XZ(12) = "摩羯座"
Yue(1) = 1
Yue(2) = 2
Yue(3) = 3
Yue(4) = 4
Yue(5) = 5
Yue(6) = 6
Yue(7) = 7
Yue(8) = 8
Yue(9) = 9
Yue(10) = 10
Yue(11) = 11
Yue(12) = 12
Ri(1) = 20
Ri(2) = 19
Ri(3) = 21
Ri(4) = 20
Ri(5) = 21
Ri(6) = 22
Ri(7) = 23
Ri(8) = 23
Ri(9) = 23
Ri(10) = 24
Ri(11) = 23
Ri(12) = 22
m = Month(x)
d = Day(x)
If d < Ri(Yue(m)) Then
HOROSCOPE = XZ(Yue(m) - 1)
Else
HOROSCOPE = XZ(Yue(m))
End If
End Function
4. 用VB語言編寫輸入出生日期算出生肖與星座的程序
'新建窗體form1
'添加控制項 DTPicker1,Command1
Private Sub Command1_Click()
Dim aa As Integer
Dim bb As Integer
Dim cc As Integer
Dim dd_xingzuo As Integer
Dim dd_shengxiao As Integer
Dim leirong As String
bb = DTPicker1.Month
aa = DTPicker1.Day
cc = DTPicker1.Year
dd_xingzuo = (bb * 100 + aa)
dd_shengxiao = cc Mod 12
If dd_xingzuo > 112 And dd_xingzuo < 221 Then
leirong = "星座:水瓶座"
End If
If dd_xingzuo >= 221 And dd_xingzuo <= 321 Then
leirong = "星座:雙魚座"
End If
If dd_xingzuo >= 322 And dd_xingzuo <= 420 Then
leirong = "星座:白羊座"
End If
If dd_xingzuo >= 421 And dd_xingzuo <= 521 Then
leirong = "星座:金牛座"
End If
If dd_xingzuo >= 522 And dd_xingzuo <= 621 Then
leirong = "星座:雙子座"
End If
If dd_xingzuo >= 622 And dd_xingzuo <= 721 Then
leirong = "星座:巨蟹座"
End If
If dd_xingzuo >= 722 And dd_xingzuo <= 821 Then
leirong = "星座:獅子坐"
End If
If dd_xingzuo >= 822 And dd_xingzuo <= 921 Then
leirong = "星座:處女座"
End If
If dd_xingzuo >= 922 And dd_xingzuo <= 1021 Then
leirong = "星座:天秤座"
End If
If dd_xingzuo >= 1022 And dd_xingzuo <= 1121 Then
leirong = "星座:天蠍座"
End If
If dd_xingzuo >= 1122 And dd_xingzuo <= 1221 Then
leirong = "星座:射手座"
End If
If dd_xingzuo >= 1222 Or dd_xingzuo <= 111 Then
leirong = "星座:摩羯座"
End If
Select Case dd_shengxiao
Case 0
leirong = leirong & vbCrLf & "身肖:猴"
Case 1
leirong = leirong & vbCrLf & "身肖:雞"
Case 2
leirong = leirong & vbCrLf & "身肖:狗"
Case 3
leirong = leirong & vbCrLf & "身肖:豬"
Case 4
leirong = leirong & vbCrLf & "身肖:鼠"
Case 5
leirong = leirong & vbCrLf & "身肖:牛"
Case 6
leirong = leirong & vbCrLf & "身肖:虎"
Case 7
leirong = leirong & vbCrLf & "身肖:兔"
Case 8
leirong = leirong & vbCrLf & "身肖:龍"
Case 9
leirong = leirong & vbCrLf & "身肖:蛇"
Case 10
leirong = leirong & vbCrLf & "身肖:馬"
Case 11
leirong = leirong & vbCrLf & "身肖:羊"
End Select
MsgBox leirong, vbInformation, "計算結果"
End Sub