ACCESS VBA 日付型データの扱い方

日付型データの扱い方

ACCESSでは様々なデータを扱うことができますが、特に利用頻度が高いのが日付型のデータです。

日付型のデータはテキスト型のデータと異なり、利用する際に注意点があります。

今回は、ACCESSでの日付型データの扱い方をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

日付型変数

ACCESSのVBAでは変数はデータ型を指定して利用します。
日付型データを宣言する際は、Date型を指定します。

例えば、test_dateという変数を日付型で宣言する際は以下のように記述します。


 Dim test_date As Date
 

ここまでは他のデータ型と大きく変わりはないと思います。

日付型データには#が必要

変数には値を格納することが可能ですが、日付型データは格納時に注意する点があります。
それは、値を#(シャープ)で囲うということです。

テキスト型データを”(ダブルクォーテーション)で囲うように、日付型データは#で囲うのです。

例えば、test_dateに2023年5月1日を代入する際は以下のように記述します。


 test_date = #5/1/2023#
 

値の前後を#で囲っていますね。
日付の表示も英語表記で月、日、年の順になっていますが、これはACCESS側で勝手に変換してくれるので意識する必要はありません。

また、日付が格納された変数をVBAで利用する際にも#が必要です。

例えば、フォームに対してフィルターをかける処理で先ほどのtest_dateを利用する場合は以下のように記述します。


 Me.Filter = "日付 = #" & test_date & "#"
 

フィルターを行う際に「日付」がtest_dateと同じもののみ抽出する、という指示です。

最初と最後の”は、フィルター条件全体をテキストデータとして扱うためのものです。
であれば、


  Me.Filter = "日付 = #test_date#"
 

でよさそうな気がしますが、これだとtest_dateを変数して扱ってくれず、「test_date」という文字を代入してしまいます。
そのため、&で区切ってtest_dateを変数として扱うようにしています。

日付操作型関数

ACCESSには日付を扱う関数も多く用意されています。

日付を変換するFormat関数

日付データを指定の書式に変換するために利用するのがFormat関数です。
西暦から和暦にしたり、年月だけを抽出したりといった加工が可能です。

format関数で日付を変換する方法

曜日を取得するWeekday関数

日付から曜日を取得したいときに利用するのがWeekday関数です。

Weekday関数で曜日を取得する

日付間隔を求めるDateDiff関数

2つの日付の間隔を求めることができるのがDateDiff関数です。

特に時刻などは計算が難しいので、この関数が役に立つでしょう。

DateDiff関数で日付間隔を求める方法

日付を加算するDateAdd関数

指定した日付を加算するのがDateAdd関数です。

DateAdd関数で日付を操作する方法

文字列を日付型データに変換するCDate、DateValue関数

文字列から日付型データに値を変換するために利用できるのがCDate関数とDateValue関数です。

日付を表すデータを文字列から日付型に変換する方法

このように、日付を操作する関数だけでもかなりの種類があります。

今日の日付を取得する方法

日付の中でも特に、今日の日付を取得するという処理はよく行われます。
VBAではDateを使って今日の日付を取得することが可能です。

以下の記事で詳しく書いてありますので、興味のある方はご覧ください。

今日の日付を取得する方法

以上、日付型データの扱い方をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。