プログラミング初心者向けのVBA入門講座第16回です。
→過去の入門講座目次はこちら
前回の講座でVBAの関数についての基本を紹介しました。
今回からいくつかよく使われる関数を紹介していきます。
まず今回は日付や時刻を操作するための関数を紹介します。
現在の日付、時刻を返す関数(Date関数、Now関数、Time関数)
Date
Now
Time
Date関数は現在の日付、Now関数は現在の日付と時刻、Time関数は現在の時刻を返します。
これらの関数は引数を必要としません。
次のコードでそれぞれセルに表示される内容を確認してみましょう。
Range(“A1”).Value = Date
Range(“A2”).Value = Now
Range(“A3”).Value = Time
年、月、日を返す関数(Year関数、Month関数、Day関数)
Year(date)
Month(date)
Day(date)
引数dateは日付を表す式、文字列、日付リテラルなどで与えます。
先ほどのNow関数などを引数で渡せば現在の日付の年月日を取得することができます。
次のコードで確認してみましょう。
Range(“B1”).Value = Year(Now)
Range(“B2”).Value = Month(“2019/8/26”)
Range(“B3”).Value = Day(#8/26/2019#)
引数はそれぞれ上からNow関数、文字列、日付リテラルで与えています。

日付リテラルとはプログラムのソースコードで使用される日付を直接記述する定数のことで日付を#で囲んで表記します。表記はアメリカ式で #Month/Day/Year# の順に記述します。PC環境に依存せずに確実に指定できる方法になります。

現在の日付を引数で渡す場合、ここではNow関数を用いましたがDate関数を用いても結果は同じになります。どちらを用いても構いませんがNow関数のほうがコードを読み返したときにその意味(「現在の」)が理解しやすいという利点があります。
時間、分、秒を返す関数(Hour関数、Minute関数、Second関数)
Hour(time)
Minute(time)
Second(time)
引数timeは時刻を表す式、文字列、時刻リテラルなどです。
Now関数やTime関数を引数として渡せば現在の時刻の時間、分、秒を取得することができます。
次のコードで確認してみましょう。
Range(“C1”).Value = Hour(“4:30:10 PM”)
Range(“C2”).Value = Minute(Now)
Range(“C3”).Value = Second(#4:30:10 PM#)
指定した年月日の日付データを返す関数(DateSerial関数)
DateSerial(year, month, day)
引数yearは年を表す整数または式、monthは月を表す整数または式、dayには日を表す整数または式を与えます。
次のコードでは今月の月初めの日を返します。
Range(“D1”).Value = DateSerial(Year(Now), Month(Now), 1)
このコードの引数dayを「0」に変えると今月の月初の1日前という意味になり先月の月末を返します。
Range(“D2”).Value = DateSerial(Year(Now), Month(Now), 0)
次のようにすれば今月の月末が取得できます。
Range(“D3“).Value = DateSerial(Year(Now), Month(Now) + 1, 0)
コメント