VBAの日付の書式設定

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 2, 2022

このチュートリアルでは、VBAを使用して日付をフォーマットする方法を説明します。

VBAでの日付の書式設定

VBAを使用して日付をフォーマットする方法は2つあります。

  1. Cells / Rangesの NumberFormat プロパティ – セルに格納された日付を書式設定する
  2. VBAのFormat関数 – VBAで日付をフォーマットする(例:変数)

NumberFormat – 日付

Excelのセルのデフォルトの数値形式は「標準」です。数値の書式を変更することで、値を数字、テキスト、日付、パーセント、通貨として表示することができます。VBAでNumberFormatプロパティを使用すると、セルや範囲内の日付の数値書式を設定することができます。

注: Excelで利用可能なさまざまな標準の日付形式は、[ホーム]>[数値]と進むと、短い日付、長い日付、時間などのオプションを確認できます。

vba number format 数値 表示形式

Number Format Options 数値 表示形式 オプション

短い日付形式

短い日付形式オプションは、日付を短い書式で表示します。 次のコードは、セルA1の.NumberFormatプロパティをShort dateに設定します。(日本語ロケールにおける短い日付形式は、”yyyy/m/d” です。)

Range("A1").NumberFormat = "mm/dd/yyyy"

長い日付形式

長い日付形式オプションは、日付をより長い文字で表示します。次のコードでは、セルA1の.NumberFormatプロパティをLong dateに設定します。(日本語ロケールにおけ長い日付形式は、”yyyy””年””m””月””d””日””” です。)

Range("A1").NumberFormat = "dddd, mmmm dd, yyyy"

ユーザー定義された日付

VBAで日付をフォーマットするために使用できるカスタム可能な書式設定を見るには、[ホーム]>[数値]の右下にある、ダイアログボックスランチャーをクリックします。 まず[表示形式]タブを選択し、次に[ユーザー定義]を選択します。

vba number format date 数値 表示形式 日付

日付のカスタム組み込み書式を選択するか、ユーザー定義の日付書式を独自に作成することができます。次のコードは、セル A1 の .NumberFormat プロパティをカスタマイズした書式に設定するものです。

Range("A1").NumberFormat = "mmm-yy"

結果は以下のようになります。

Custom Date Format in VBA  数値 表示形式 日付 ユーザー定義

次のコードは、セルA1の.NumberFormatプロパティに、ユーザーが定義した日付の書式を設定します。

Range("A1").NumberFormat = "dddd-dd-mmm-yy"

結果は以下のようになります。

User Defined Custom Date Formatting 数値 表示形式 日付 ユーザー定義

Excelにあらかじめ用意されているサンプルを見ることで、NumberFormatをどのように設定するかを学ぶことができます。より詳しい情報は、日付の書式に関するマイクロソフトのドキュメントをご覧ください。

VBAのFormat関数

前述したように、NumberFormatメソッドはExcelのセルに格納されている日付のNumberformatを設定するのに適しています。 VBAでは、Format Functionを使用して、日付を特定の日付書式を持つ文字列に変換することができます。

日付の書式を設定するには、次の構文を使用します。

Format(String_Representation, NumberFormatCode)

String_Representation – 日付を表すテキスト文字列

NumberFormatCode – 表示方法を指定する書式文字列。

次のコードは、日付を表すテキスト文字列を、USロケールの長い日付形式にする方法を示しています。

Formatting Dates as Long Dates 数値 表示形式 長い日付

MsgBox Format("1/1/2010", "dddd, mmmm dd, yyyy")

結果は以下のようになります。

Format Function in VBA 表示形式  関数

Format関数は、上記のNumberFormatと同じ日付書式構文を使用することに注意してください。 次のコードは、日付を表すテキスト文字列を簡略化した日付形式にする方法を示しています。

MsgBox Format("09 October 2012", "Medium Date")

結果は以下のようになります。

Medium Date Formatting in VBA 簡易な日付 表示形式

次のコードは、日付を表す文字列をユーザー定義の書式にする方法を示しています。

MsgBox Format("09 October 2012", "dddd: dd/mm/yy")

Custom Formatting 表示形式 ユーザー定義

VBAカスタムフォーマットビルダー

VBAアドインです。AutoMacroには、VBA Editor用のCustom Format Builderが含まれています。これにより、カスタムフォーマットを設定し、希望する値の出力を即座にプレビューすることができます。 vba custom number format

このVBAアドインには、他にも多数の「コードジェネレータ」、豊富なコードライブラリ、その他のコーディングツールの品揃えがあります。 VBAプログラミングに真剣に取り組む人にとって、究極のアドインといえるでしょう。

VBA Accessで日付の書式を設定

Access VBAの日付の書式を設定する関数は、Excel VBAと全く同じように動作します。

Function GetDateFilter() As String
'Accessのフォームにある2つの日付フィールドから情報を取得するための書式文字列を作成する
   Dim strDateField As String
   If IsNull(Me.txtSDate) = False Then
      If IsNull(Me.txtEDate) = True Then Me.txtEDate = Me.txtSDate
      If strDateField2 = "" Then
        GetDateFilter = strDateField & " Between #" & Format(Me.txtSDate, "mm/dd/yyyy") & "# And #" & Format(Me.txtEDate, "mm/dd/yyyy") & "#"
      End If
   End If
End Function
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples