VBAの日付の書式設定
In this Article
このチュートリアルでは、VBAを使用して日付をフォーマットする方法を説明します。
VBAでの日付の書式設定
VBAを使用して日付をフォーマットする方法は2つあります。
- Cells / Rangesの NumberFormat プロパティ – セルに格納された日付を書式設定する
- VBAのFormat関数 – VBAで日付をフォーマットする(例:変数)
NumberFormat – 日付
Excelのセルのデフォルトの数値形式は「標準」です。数値の書式を変更することで、値を数字、テキスト、日付、パーセント、通貨として表示することができます。VBAでNumberFormatプロパティを使用すると、セルや範囲内の日付の数値書式を設定することができます。
注: Excelで利用可能なさまざまな標準の日付形式は、[ホーム]>[数値]と進むと、短い日付、長い日付、時間などのオプションを確認できます。
短い日付形式
短い日付形式オプションは、日付を短い書式で表示します。 次のコードは、セル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で日付をフォーマットするために使用できるカスタム可能な書式設定を見るには、[ホーム]>[数値]の右下にある、ダイアログボックスランチャーをクリックします。 まず[表示形式]タブを選択し、次に[ユーザー定義]を選択します。
日付のカスタム組み込み書式を選択するか、ユーザー定義の日付書式を独自に作成することができます。次のコードは、セル A1 の .NumberFormat プロパティをカスタマイズした書式に設定するものです。
Range("A1").NumberFormat = "mmm-yy"
結果は以下のようになります。
次のコードは、セルA1の.NumberFormatプロパティに、ユーザーが定義した日付の書式を設定します。
Range("A1").NumberFormat = "dddd-dd-mmm-yy"
結果は以下のようになります。
Excelにあらかじめ用意されているサンプルを見ることで、NumberFormatをどのように設定するかを学ぶことができます。より詳しい情報は、日付の書式に関するマイクロソフトのドキュメントをご覧ください。
VBAのFormat関数
前述したように、NumberFormatメソッドはExcelのセルに格納されている日付のNumberformatを設定するのに適しています。 VBAでは、Format Functionを使用して、日付を特定の日付書式を持つ文字列に変換することができます。
日付の書式を設定するには、次の構文を使用します。
Format(String_Representation, NumberFormatCode)
String_Representation – 日付を表すテキスト文字列
NumberFormatCode – 表示方法を指定する書式文字列。
次のコードは、日付を表すテキスト文字列を、USロケールの長い日付形式にする方法を示しています。
MsgBox Format("1/1/2010", "dddd, mmmm dd, yyyy")
結果は以下のようになります。
Format関数は、上記のNumberFormatと同じ日付書式構文を使用することに注意してください。 次のコードは、日付を表すテキスト文字列を簡略化した日付形式にする方法を示しています。
MsgBox Format("09 October 2012", "Medium Date")
結果は以下のようになります。
次のコードは、日付を表す文字列をユーザー定義の書式にする方法を示しています。
MsgBox Format("09 October 2012", "dddd: dd/mm/yy")
VBAカスタムフォーマットビルダー
VBAアドインです。AutoMacroには、VBA Editor用のCustom Format Builderが含まれています。これにより、カスタムフォーマットを設定し、希望する値の出力を即座にプレビューすることができます。
この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