VBA小鬧鐘程式專案:時間函數及Application對象基本操作

VBA可以設計會講話的小鬧鐘。本文先介紹Now及TimeValue兩個基本的VBA時間函數,進而說明如何用Application.Speech讓Excel依照特定的中英文講話,最後再以Application.OnTime設計小鬧鐘程式專案。

一、VBA時間函數

設計VBA程式碼,這裡用到時間函數Now,它會傳回電腦目前的系統時間,注意到在設定儲存格對象的屬性時,預設為儲存格的值,因此後面的「.value」可加可不加。另外由於Excel同樣時間有很多不同的顯示格式,最後一行用到了Excel數字格式代碼的VBA語法,設定要顯示的時間格式。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 1

二、三種時間格式

執行「Sub A_現在幾點了()」程式,從資料編輯列的公式可以看到實際時間後面加一個AM,這個通常是在一開始電腦設定時區的標準習慣形式,然後在儲存格A1在Excel預設的顯示格式,沒有秒也沒有日AM,A2則是程式預先定義想要顯示的格式,如此三個互相參照會更加清楚。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 3

三、TimeValue函數

在瞭解了VBA時間函數NOW之後,再介紹在設計程戈時很有可能會用到的TimeValue函數,作用是某一段時間值,例如這裡的「Now+TimeValue」語法,便是在目前時間再加上某個時間區段,「Now + TimeValue(“00:00:05”)」代表是現在再加上5秒鐘之後的時間,因此可得到TimeValue的唯一參數指的是以時分秒設定的時間值。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 5

四、五秒後的時間

再回到Excel驗證一下VBA程式。果然看到左邊是現在的時間,右邊則是加上5秒鐘之後的時間。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 7

五、Application.Speech

通常在遇到比較不熟悉的VBA語法時,例如本篇文章所介紹的Now和TimeValue,除了像先前步驟所提到的寫入儲存格值的測試方式,或者這裡的MsgBox函數,其實還可以讓VBA直接講話,也就是這裡看到的Application.Speech,而且注意到VBA不但會講英文,它還會講中文!

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 9

六、VBA講中英文

執行程式果然跳出一個MsgBox視窗,接著在文章比較沒有辦法呈現,讀者有興趣可以參考本篇文章最下面所附的相關贊贊小屋YouTube影片,可以實際聽到VBA是怎麼講話的。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 11

七、VBA程式鬧鐘

在瞭解了VBA時間函數及講話函數之後,最後合併應用,便可以設計一個VBA程式小鬧鐘。這裡的「Application.OnTime」指的是在某個時間點執行程式,所要執行的程式「procedure」便是「時間到了」。

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 13

Excel VBA程式專案

這篇文章所用到的程式語句並不會很複雜,從字句上大概可瞭解其作用,透過這個簡單翻譯可以,重點是介紹VBA特有的函數,可以將時間延後,也可以講話,相較於Excel函數而應該算是特殊功能。雖然VBA原始目的是自動化操作Excel,但畢竟VBA本質上是Visual Basic程式語言,因此也能像這篇文章所看到的設計簡單的程式專案。

完整學習:VBA自動化文章合輯

VBA小鬧鐘程式專案:時間函數及Application對象基本操作 15
歡迎加入Line社群,口袋裡的VBA小教室!