
ACCESSではデータ型を意識して変数や値を扱う必要があります。
単純に2024/7/21と書いてあっても、これが日付型データなのか、テキスト型データなのかによって処理結果が変わってしますのです。
その中でも特に扱いに注意が必要な日付型データです。
今回は、DateValue関数で日付型データを作る方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。
DateValue関数
DateValue関数は文字列を日付に変換する関数です。
以下の構文で利用します。
DateValue ( 値 )
単純に引数に値を指定するだけですので簡単ですね。
通常はこの値の部分に、日付に見えるテキストデータを入れることになります。
DataValue関数の使用例
それでは、DataValue関数のクエリでの使用例をご紹介します。
今回は以下のクエリを作成しました。

「日付テキスト」に文字列を入力すると、DataValue関数で日付型に変換された値が「日付変換」に表示されます。
以下がクエリの結果です。入力値毎にどのように変換されるか見てみましょう。

それぞれの結果を以下で解説します。
| 入力値 | 出力値 | 備考 |
|---|---|---|
| 2025/1/1 | 2025/01/01 | 「/」で区切って表記したテキストを日付型データが変換される |
| 2025/01/01 | 2025/01/01 | 0を入れても正しい日付の範囲であれば日付型データに変換される |
| 2025/13/01 | #エラー | 存在しない月の値が入っているとエラー |
| 2025/1/32 | #エラー | 存在しない日の値が入っているとエラー |
| 1/1 | 2025/01/01 | 月日だけを指定すると自動的に年は今年になる |
| 250101 | #エラー | 「/」で区切っていないとエラー |
| 25/1/1 | 2025/01/01 | 年の20を省略しても補完して変換される |
| 13/12 | 2025/12/13 | 月の数値が存在しないものでも、英語表記(月日が逆)にした場合に存在する日付であれば逆転して変換される |
特に最後のパターンはかなりイレギュラーですね。
想定外の日付に変換されてしまわないように、入力値の段階でチェックを行ってイレギュラーな値が入らないようにしておくのが良いでしょう。
DateValue関数を使ったVBAプロシージャ
最後に、DateValue関数を使って日付を指定するとその同月の20日の日付を返すというプロシージャをご紹介します。
Public Function twenty_day(x As Date) As Date
twenty_day = DateValue(Year(x) & "/" & Month(x) & "/20")
MsgBox twenty_day
End Function
twenty_dayという変数にDateValue関数を使って作成した日付データを格納しています。
もともと与えられた日付(x)に対して、Year関数とMonth関数を使って年、月を別々に取り出し、& と “/” でつないで日付型データの表示方式に合わせたうえで、最後に”/20″とすることで指定月の20日の日付データを作っています。
このようにDataValue関数は日付型データ以外から計算によって作った日付のように見えるデータを、正しく日付型データに変換する際に利用できます。
以上、DateValue関数で日付型データを作る方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に300以上のACCESSデータベースの開発・修正実績のあるはこにわガジェット(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

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