【Excelマクロ(VBa)】日付関連


 日付の取得方法


今日の日付を取得する場合、Now関数Date関数 があります。
出力結果を見比べてみると、下記の通り Now関数日付 + 時間 ですが、
Date関数日付のみという違いあります。

 ▽ Now関数
MsgBox "Now : " & Now

  

 ▽ Date関数
MsgBox "Date : " & Date

  


 日付のデフォルト表示設定


この表示(yyyy/MM/dd)はタスクバーの右下にある日付・時刻の表示に依存するので、この設定を変更すると表示内容が変わります。海外では日本の表記と異なる事が多いので注意が必要です。
尚、日付の設定は下記の通りです。

(Windows7環境)
[タスクバーの右した日時をクリック] -> [日付と時刻の設定の変更] -> [日付と時刻の変更] -> [カレンダーの設定の変更] -> [短い形式]



例えば、短い形式の「 yyyy/MM/dd 」の値を 「 dd/MM/yyyy 」に変更してみます。
すると下記のように「例」の短い形式の表示が変わりました。(同じようにタスクバーの日付の書式も変わってます)



この状態でマクロを実行すると、下記のような出力結果となります。

 ▽ Now関数
MsgBox "Now : " & Now

  

 ▽ Date関数
MsgBox "Date : " & Date

  


 年月日それぞれを取得する


Now関数 または Date関数 から 年だけ or 月だけ or 日だけ を取得する場合は、Excelの関数と同様、Year関数Month関数Day関数を用います。表記上の注意ですが、下記Month関数の例を見ると、1月は 1 と表記され、01 と表記されません

 ▽ Year関数
MsgBox "Yaer : " & Year(Date)

  

 ▽ Month関数
MsgBox "Month : " & Month(Date)

  

 ▽ Day関数
MsgBox "Day : " & Day(Date)

  


 表記を関数(Format)で変更する


上記でチラと触れましたが、日付を yyyy/MM/dd で表記する国ばかりではなく、タイは dd/MM/yyyy で表記します。この場合、日本と同じマクロを起動しても日付について思った通りの処理がされない可能性があります。但し、情報量は同じで表記だけが異なる点に着目すれば、表記を変更する Format関数 を用いると表記上の問題は解決されると思います。

Format関数は、Format(値, "表示形式")と用います。

例としてDate関数を用いて下記のように記述した結果をご確認下さい。

MsgBox "Date(変更有) : " & Format(Date, "dd/MM/yyyy") & Chr(13) & _
    "Date(変更無) : " & Date

  

上記で年・月・日を取得するため、Year関数、Month関数、Day関数を用いるご紹介をしましたが、月・日のように表記上1桁となる場合、思ったように表示されません。そんな時は Format(date, "yyyy")、Format(date, "MM")、Format(date, "dd") と用いると都合が良い場合があります。

管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: VBa(Excelマクロ), システム開発 パーマリンク

コメントを残す