用vb編程,5、撰寫程式實作:輸入某年某月某日,判斷這一天是這一年中的第幾天。(提示:平年與閏年不同)。
代碼有問題運行不了。
Private Sub Form_Load()
'題目,輸入某年某月某日,判斷這一天是這一年的第幾天?
'創建一個標簽,用來輸出結果
'創建三個按鈕,caption為確定,重置,退出
'程式開始的時候,讓標簽提示輸入資料
Label1.Caption = "請分別輸入年,月,日,進行查詢,不要帶任何非數字的字符"
End Sub
Private Sub Command3_Click() '按鈕被單擊,觸發事件
Dim cyear, cmonth, cday '它們三個分別儲存三個文本框的內容
Dim days '儲存結果的變數
'先判斷是否有資料輸入
texts = Text1.Text + Text2.Text + Text3.Text '如果不都是數字,加起來不可能是數字
If IsNumeric(texts) = False Then '函式isnumeric()判斷是否為數字
MsgBox "你可能輸入有誤,請重新輸入!", 48, "日期序數判斷"
'出錯后自動清空文本框
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
'如果資料沒有出錯則進行嵌套,判斷閏年,平年,分類處理
Else
'給變數賦值
cyear = Text3.Text
cmonth = Text2.Text
cday = Text1.Text
'VB的Select陳述句的格式是
'Select Case <運算式>
'Case <運算式結果表列1>
'<陳述句組1>
'Case <運算式結果表列2>
'<陳述句組2>
'……
'Case <運算式結果表列n>
'<陳述句值n>
'Case Else
'<陳述句組n+1>
'End Select
'在SelectCase陳述句中,有一個用于判斷的運算式,根據此運算式的不同結果,
'執行不同 SelectCase運算式的結果進行判斷,然后再執行不同的操作。
'先計算cmonth之前的日期數
Select Case cmonth '當cmonth取不同的值的時候,執行下面不同的陳述句
Case 1
days = 0
Case 2
days = 31
Case 3
days = 59 '2月份初始化為28天,就是平年2月的數目
days = 90
Case 5
days = 120
Case 6
days = 151
Case 7
days = 181
Case 8
days = 212
Case 9
days = 243
Case 10
days = 273
Case 11
days = 304
Case 12
days = 334
End Select '結束select行程
If ((cyear Mod 100 <> 0 And cyear Mod 4 = 0) Or cyear Mod 400 = 0) And cmonth > 2 Then '判斷閏年平年
Label1.Caption = days + cday + 1
Else
Label1.Caption = days + cday
End If
End If
End Sub
Private Sub Command2_Click() '這是重置按鈕,還原為開始狀態即可(清除按鈕命令代碼)。
Label1.Caption = "請分別輸入年,月,日,進行查詢,不要帶任何非數字的字符"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Command1_Click() '這是退出按鈕
End
End Sub
uj5u.com熱心網友回復:
用不著,用DateDiff讓這個日期和這年的1月1日比較下就可以了。Dim dt As DateTime
Dim s As String
s = "2014/5/5"
dt = CDate(s)
MsgBox DateDiff("d", dt, CDate(Left(s, 4) & "/1/1")) & "天"
uj5u.com熱心網友回復:
謝謝幫忙啦.
uj5u.com熱心網友回復:
那就點結貼按鈕給分吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/122887.html
