您的位置:首頁>正文

VBA|日期時間類型資料的存儲和處理

在Excel和VBA中, 日期時間資料也是一種很重要的資料類型。

1 獲取當前日期和時間

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周)!

5 用Timer函數類比計時器

在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-

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示