在Excel和VBA中,
日期時間資料也是一種很重要的資料類型。
Sub 顯示當前日期和時間()
Debug.Print "當前日期和時間為:" & Now
Debug.Print "當前日期和時間為:" & Date
Debug.Print "當前日期和時間為:" & Time
End Sub
運行結果
當前日期和時間為:2017/11/15 星期四 17:04:32
當前日期和時間為:2017/11/15 星期四
當前日期和時間為:17:04:32
2 設置系統日期和時間Sub 設置系統日期和時間()
Date = #8/8/2008#
Time = #8:08:00 AM#
Debug.Print "當前日期和時間為:" & Date
Debug.Print "當前日期和時間為:" & Time
End Sub
運行結果:
當前日期和時間為:2008/8/8 星期五
當前日期和時間為:8:08:00
3 生成日期和時間Sub 生成日期和時間()
Debug.Print DateValue("April 19, 1977")
Debug.Print DateSerial(1977, 4, 19)
Debug.Print TimeValue("8:08:00 AM")
Debug.Print TimeSerial(8, 8, 8)
End Sub
運行結果:
1977/4/19 星期二
1977/4/19 星期二
8:08:00
8:08:08
4 日期資料運算Sub 日期運算()
Dim MyDate As Date
MyDate = Date
Debug.Print "當前日期:" & MyDate '當前日期
Debug.Print "10天后的日期:" & MyDate + 10 '返回10天后的日期
Debug.Print "10天前的日期:" & MyDate - 10 '返回10天前的日期
End Sub
運行結果:
當前日期:2017/11/13 星期一
10天后的日期:2017/11/23 星期四
10天前的日期:2017/11/3 星期五
Sub 增加日期指定部分的值()
Dim MyDate As Date
MyDate = "31-Jan-2008"
Debug.Print "當前日期:" & MyDate
Debug.Print "前10天的日期:" & DateAdd("d", -10, MyDate)
Debug.Print "後10天的日期:" & DateAdd("d", 10, MyDate)
Debug.Print "下月的今日:" & DateAdd("m", 1, MyDate)
Debug.Print "下周同星期數的日期:" & DateAdd("ww", 1, MyDate)
Debug.Print "明年的今日:" & DateAdd("yyyy", 1, MyDate)
End Sub
運行結果:
當前日期:2008/1/31 星期四
前10天的日期:2008/1/21 星期一
後10天的日期:2008/2/10 星期日
下月的今日:2008/2/29 星期五
下周同星期數的日期:2008/2/7 星期四
明年的今日:2009/1/31 星期六
Sub 距2018年世界盃足球賽開幕日期()
Dim oDate As Date, today As Date
Dim t1 As Integer, t2 As Integer
oDate = #6/14/2018#
today = #10/15/2017#
t1 = DateDiff("d", today, oDate)
t2 = DateDiff("ww", today, oDate)
Debug.Print "今日距2018年世界盃足球賽開幕還有:" & t1 & "天(" & t2 & "周)!"
End Sub
運行結果:
今日距2018年世界盃足球賽開幕還有:210天(30周)!
在VBA中, 沒有專門的計時器, 可使用Timer函數來類比計時器的功能。 Timer函數將返回一個Single類型的值, 代表從午夜開始到現在經過的秒數。
Sub 暫停程式的執行()
Dim PauseTime, Start, Finish, TotalTime
If (MsgBox("是否暫停程式5秒鐘", vbQuestion + vbYesNo)) = vbYes Then
PauseTime = 5 ' 設置暫停時間。
Start = Timer ' 設置開始暫停的時刻。
Do While Timer < Start + PauseTime
DoEvents ' 將控制讓給其他程式。
Loop
Finish = Timer ' 設置結束時刻。
TotalTime = Finish - Start ' 計算總時間。
MsgBox "程式暫停時間為:" & TotalTime & " 秒!"
Else
End
End If
End Sub
在Excel中,
日期是以一個序列數的形式來保存的,
數值的整數部分表示從1899年12月30日算起的天數,
數值的小數部分表示當天的具體時間。
如北京奧運會開幕時間為2008年8月8日20:00,
在Excel中將其存放為39668.833。
表示該日期距1899年12月30日為39668天,
而時間則為當天的20/24。
對於VBA使用者來說,
一般不用理會資料內部的保存方式,
VBA能自動進行浮點數與顯示的日期格式間的轉換。
-End-