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関数です。
西暦から和暦にしたり、年月だけを抽出したりといった加工が可能です。
曜日を取得するWeekday関数
日付から曜日を取得したいときに利用するのがWeekday関数です。
日付間隔を求めるDateDiff関数
2つの日付の間隔を求めることができるのがDateDiff関数です。
特に時刻などは計算が難しいので、この関数が役に立つでしょう。
日付を加算するDateAdd関数
指定した日付を加算するのがDateAdd関数です。
文字列を日付型データに変換するCDate、DateValue関数
文字列から日付型データに値を変換するために利用できるのがCDate関数とDateValue関数です。
このように、日付を操作する関数だけでもかなりの種類があります。
今日の日付を取得する方法
日付の中でも特に、今日の日付を取得するという処理はよく行われます。
VBAではDateを使って今日の日付を取得することが可能です。
以下の記事で詳しく書いてありますので、興味のある方はご覧ください。
以上、日付型データの扱い方をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。