【VBA】システム日付とシステム時刻
VBA 基本技術のコーナーです。皆さんがお使いの PC の片隅に現在の日付と時刻が表示されていると思いますけど、それは PC がファイルの保存時間などを記録するためのシステム日付、システム時刻とよばれるものです。このデータを VBA で取得する方法を解説しますよ。関数を使うだけなので特に難しいことはありませんけど、日付や時刻を組み込んだアプリケーションを開発するためには必須となる知識です。それでは講座を始めましょう。
【VBA】Dateで現在のシステム日付を取得します
VBA の Date は現在のシステム日付、つまり現在の年・月・日を取得する関数です。
'VBA 現在の日付を表示するプロシージャ Sub Now_Date() Dim mydate As Date mydate = Date Debug.Print "現在の日付は" & mydate & "です" End Sub
Now_Date() を実行するとイミディエイトウィンドウに「現在の日付は2017/09/19です」といのように表示されます。このマクロは
Sub Now_Date_2() Debug.Print "現在の日付は" & Date & "ですよ" End Sub
と書いても、まあ同じなんですけど、Date 関数の戻り値が日付型 (Date型) となることを明示するために、あえて変数 mydate にシステム日付を代入しています。以降のマクロもこんな感じで記述しています。実際、もっと複雑なマクロを書くときも、いったんは日付を変数に入れておくことが多くなると思います。
【VBA】Timeで現在のシステム時刻を取得します
Time は現在のシステム時刻、つまり現在の時・分・秒を取得する関数です。
'VBA 現在の時刻を表示するプロシージャ Sub Now_Time() Dim mytime As Date mytime = Time Debug.Print "現在の時刻は" & mytime & "ですよ" End Sub
Now_Time() を実行するとイミディエイトウィンドウに「現在の時刻は 5:51:43 ですよ」のように表示されます。
【VBA】Nowで現在のシステム日付とシステム時刻を同時に取得します
現在のシステム日付とシステム時刻を同時に取得するときは Now 関数を使います。
'VBA 日付と時刻を表示します Sub Now_Date_Time() Dim mynow As Date mynow = Now Debug.Print "現在の日付と時刻は" & mynow & "です" End Sub
Now_Date_Time() を実行するとイミディエイトウィンドウに「現在の日付と時刻は2017/09/19 5:59:55です」というように、現在のシステム日付とシステム時刻が表示されます。
【VBA】Yearでシステム日付の年、月、日を返します
VBA の Year はシステム日付から「年」を整数型で取得します。また、Month と Day はそれぞれ「月」と「日」を整数型で取得します。
'VBA 現在の年、月、日を表示します Sub YMD() Dim myyear As Integer Dim mymonth As Integer Dim myday As Integer myyear = Year(Date) mymonth = Month(Date) myday = Day(Date) Debug.Print "今年は" & myyear & "年であります" Debug.Print "今月は" & mymonth & "月であります" Debug.Print "今日は" & myday & "日であります" End Sub
YMD() を実行するとイミディエイトウィンドウに
今年は 2017 年であります
今月は 9 月であります
今日は 19 日であります
のように表示されます。
【VBA】Hourで時・分・秒を返します
VBA の Hour はシステム時刻から「時」を整数型で取得します。Minute と Second はそれぞれ「分」と「秒」を整数型で取得する関数です。
'VBA 現在の時、分、秒を表示するサブルーチン Sub HMS() Dim myhour As Integer Dim myminute As Integer Dim mysecond As Integer myhour = Hour(Time) myminute = Minute(Time) myday = Second(Time) Debug.Print "現在の時刻は" & myhour & "時です" Debug.Print "現在の分は" & myminute & "分です" Debug.Print "現在の秒は" & mysecond & "秒です" Debug.Print "今" & myhour & "時" & myminute & "分です" End Sub
このマクロを実行するとイミディエイトウィンドウに
現在の時刻は 6 時です
現在の分は 13 分です
現在の秒は 0 秒です
今 6 時 13 分です
のように表示されます。今回紹介した関数を使って日付と時刻をどんどん取得しちゃってくださいな。
コメント