目次
Microsoft Visual Basicアプリケーションでは、日付関数や日付に関する概念は、データセットでさまざまな操作を実行するために不可欠です。 これらの関数を使用しなければならないさまざまな状況に遭遇することがあります。 このチュートリアルでは、VBAの日付関数について適切な例と適切なイラストで学習します。 また、複数の日付関数も提供する予定です。ワークシートに実装することができます。
練習用ワークブックをダウンロードする
VBAの使用例 Date.xlsm
VBAの日付関数入門
Excelでは、日付の分類は 日付/時間 これは組み込み関数で、VBA マクロで日付関連の操作を実行するために使用できます。
Date機能を使う前に、まずは VBAの日付変数 .
⏺ 構文
日付()⏺ 論証 説明
論外です。
⏺リターンズ
現在の日付を返す。
⎤ 利用できるのは
Office 365用Excel、Excel 2019、Excel 2016、Excel 2013、Excel 2011 for Mac、Excel 2010、Excel 2007、Excel 2003、Excel XP、Excel 2000
⏺ 例
ご存知のように、引数はありませんから、次のように入力するだけです。
Sub vba_date() Dim current_date As Date current_date = Date MsgBox current_date End Sub
Date関数を扱う場合、この例のようにVBAのコードに括弧をつけない。
出力 :
VBAで学ぶべき12の日付関数
さて、これからのセクションでは、VBAで様々な目的に使用できる追加の日付関数をいくつか紹介します。 これらのセクションを読めば、VBAで日付を扱うあらゆる方法が分かります。 あなたの武器として持っておくことをお勧めします。 きっとあなたの知識を向上させてくれることでしょう。
1.VBAのDateAdd関数を日付にする
VBAでは、DateAdd関数を使って、特定の日付に日数を追加します。 その後、結果の日付を返します。
構文です。
DateAdd(間隔、数値、日付)
論拠となる。
の間隔を空けています。 String expressionには追加したい時間間隔を指定します。
の番号を入力します。 正の値(未来の日付を取得)または負の値(過去の日付を取得)を指定します。
の日付が表示されます。 元の日付/時刻です。
では、その 間隔 引数には、以下の設定が可能です。
イェイ - 年
q - 四半期
m - 月
y - 日
d - 日
w - 平日
ww 週間
h - 時間
n - 分
s - 第2回
コードスニペット :
Sub dateadd_function() Dim result_Date As Date result_Date = DateAdd("d", 15, "1/31/2022") MsgBox result_Date End Sub
出力します。
ご覧のように、VBAで現在の日付に15個の日付を追加しました。
続きを読む VBAでIsDate関数を使用する方法(3例)
2.VBAによるDateDiff関数
DateDiff関数は、指定された2つの日付の間の時間差の数を決定するVariant(Long)を返します。
シンタックス :
DateDiff(interval, date1, date2, [ firstdayofweek, [ firstweekofyear ] ]) )
論拠となる。
の間隔を空けています。 String expression は追加したい時間の間隔String expression は2つの日付の区別を計算するために使用する時間の間隔である。
日付1,日付2 : 必須;バリアント(日付)。 計算に使用したい2つの日付。
週の初日 オプション:週の最初の曜日を定義する定数。 固定されていない場合は、日曜日とみなされる。
年の最初の週 オプション。 年の最初の週を設定する定数。 設定されていない場合、最初の週は1月1日が出現する週とみなされる。
では、その 間隔 引数には、以下の設定が可能です。
イェイ - 年
q - 四半期
m - 月
y - 日
d - 日
w - 平日
ww 週間
h - 時間
n - 分
s - 第2回
があります。 初日 引数にはこのような設定があります。
ブイビーサンデー - は、日曜日を一週間の中で最も重要な日と位置づけています。
vbMonday - は、月曜日を週の初めの日として採用しています。
vbTuesday - は、火曜日を週の初めの日として運用しています。
vbWednesday - は、水曜日を週の初めの日として採用しています。
vbThursday - は、木曜日をむしろ曜日として運用しています。
vbFriday - は、金曜日を週の初めの日として採用しています。
vbSaturday - は、土曜日を週の初めの日として運用しています。
vbUseSystemDayOfTheWeek - は、端末の設定により定義された週の最初の曜日を使用します。
があります。 初週 には、このような設定があります。
vbFirstJan1 - は、1月1日を含む週に利用されます。
vbFirstFourDays - は、新年に4日以上ある最初の週を採用。
vbFirstFullWeek - は、第1週目のフルタイムで運用。
ブブシステム - は、デバイスのロケーションで定義された年の最初の週を使用します。
コードスニペット
Sub DateDiff_Function() Dim result As Long result = DateDiff("d", "1/31/2022", "2/12/2022") MsgBox result End Sub
出力 :
最終的には、2つの日付の差をVBAで返します。
続きを読む ExcelでVBAのDateDiff関数を使う方法(9例)
3.日付としてのDatePart関数
DatePart 関数は、指定された日付の定義部分を含む Variant(Integer)を返す。
シンタックス :
DatePart(interval, date, [ firstdayofweek, [ firstweekofyear ]])
論拠となる。
の間隔を空けています。 String expression は追加したい時間の間隔String expression は2つの日付の区別を計算するために使用する時間の間隔である。
の日付になります。 必須;バリアント(日付)。 計算に使用したい日付。
週の初日 オプション:週の最初の曜日を定義する定数。 固定されていない場合は、日曜日とみなされる。
年の最初の週 オプション。 年の最初の週を設定する定数。 設定されていない場合、最初の週は1月1日が出現する週とみなされる。
では、その 間隔 引数には、以下の設定が可能です。
イェイ - 年
q - 四半期
m - 月
y - 日
d - 日
w - 平日
ww 週間
h - 時間
n - 分
s - 第2回
があります。 初日 引数にはこのような設定があります。
ブイビーサンデー - は、日曜日を一週間の中で最も重要な日と位置づけています。
vbMonday - は、月曜日を週の初めの日として採用しています。
vbTuesday - は、火曜日を週の初めの日として運用しています。
vbWednesday - は、水曜日を週の初めの日として採用しています。
vbThursday - は、木曜日をむしろ曜日として運用しています。
vbFriday - は、金曜日を週の初めの日として採用しています。
vbSaturday - は、土曜日を週の初めの日として運用しています。
vbUseSystemDayOfTheWeek - は、端末の設定により定義された週の最初の曜日を使用します。
があります。 初週 はこれらの値を持つ。
vbFirstJan1 - は、1月1日を含む週に稼働します。
vbFirstFourDays - は、新年早々、せいぜい4日程度の大きさしか持たない最初の週を利用している。
vbFirstFullWeek - は、今年最初の完全な週を活用します。
ブブシステム - は、デバイスのロケーションによって選択された年の最初の週を採用しています。
コードスニペット :
Sub DatePart_Function() Dim result As Integer result = DatePart("m", "10/11/2022") MsgBox result End Sub
出力 :
このように、VBAのコードでこの日付関数を使用することができます。
続きを読む ExcelでVBA FileDateTime関数を使う方法(3つの使用法)
4.DateSerial関数
入力された年、月、日をもとに日付を表示するには、The 日付シリアル 関数を使用します。
構文です。
DateSerial(年、月、日)
論拠となる。
年 - 100 から 9999 までの数字、または年を表す数値表現を指定する。
月 - 必須項目。 月を定義する整数値。
日 - 必須項目。 日を表す整数値。
コードスニペット
Sub date_serial() Dim date_special As Date date_special = DateSerial(2022, 1, 11) MsgBox date_special End Sub
出力 :
続きを読む ExcelでVBA TimeSerialを使用する方法(3例)
4.VBAのDateValue関数
では、DateValue関数を使って、日付を定義してみます。
シンタックス :
DateValue(日付)
主張する。
ここでは 年月日 は、通常、100年1月1日から9999年12月31日までの日付を表す文字列表現であるが、これに限らず、日付、時刻、またはその範囲内の日付と時刻の両方を表すことができる表現であれば、さらに追加することができる。
コードスニペット
Sub Date_value() Dim result As Date result = DateValue("January, 10, 2022") MsgBox result End Sub
出力 :
このように、VBAのコードで日付関数を使うことに成功しました。
5.VBAのDay関数
1 から 31 までの実数で、その月の日数を表す Variant(Integer)を返す。
シンタックス :
日(日付)
主張する。
引数 date は、Variant、数値表現、文字列表現、またはその組み合わせで、日付を表す。 日付に Null が含まれる場合は、Null も返す。
コードスニペット
Sub day_function() Dim date1, the_day date1 = #12/12/2023# the_day = Day(date1) MsgBox the_day End Sub
出力します。
ご覧のように、VBAのコードを使うと、指定した日付の日が12であることがわかります。
関連コンテンツ ExcelのVBA書式設定関数(8つの使用例付き)
6.VBAの月関数を日付に変換する
年内の月を表す 1 から 12 までの実数値を定義した Variant(Integer)を返す。
シンタックス :
月(日)
主張する。
引数 date は、Variant、数値表現、文字列表現、またはその組み合わせで、日付を表す。 日付に Null が含まれる場合は、Null も返す。
コードスニペット
Sub month_function() Dim date1, the_month date1 = #12/12/2023# the_month = Month(date1) MsgBox the_month End Sub
出力します。
関連コンテンツ ExcelでVBAのRight関数を使用する方法(6例)
類似の読み物
- VBAのエンバイロン関数の使い方(4例)
- ExcelでVBAと関数を使う方法(4つの例)
- VBA If - Then - Elseステートメント(Excelの4例)
- ExcelでVBAのAbs関数を使う方法(9例)
- Excel VBAでConcatenateを使用する方法(4つのメソッド)
7.MonthName機能
指定された月を示す文字列を返す。
シンタックス :
月名(月, [ 略語 ])
主張する。
月です。 1月が1、2月が2というように、月のタイトルを数字で表します。
を省略することができます。 月名を省略するかどうかを示すブール値。 省略した場合、デフォルトはFalseとなり、月名を省略しないことを示す。
コードスニペット
Sub MonthName_Function() Dim month_name As String month_name = MonthName(9, True) MsgBox month_name End Sub
出力します。
このように、VBAの日付関数で月の名前を見つけることができました。
8.ウィークデイ機能
を返します。 バリアント ( 整数 )は、曜日を表す実数値を持つ。
シンタックス :
平日(日付, [ 週の初日 ])
主張する。
の日付になります。 引数 date は、Variant、数値表現、文字列表現、またはその組み合わせで、日付を表す。 日付に Null が含まれる場合は、Null も返す。
週の初日 オプション:週の最初の曜日を定義する定数。 固定されていない場合は、日曜日とみなされる。
があります。 初日 引数にはこのような設定があります。
ブイビーサンデー - は、日曜日を一週間の中で最も重要な日と位置づけています。
vbMonday - は、月曜日を週の初めの日として採用しています。
vbTuesday - は、火曜日を週の初めの日として運用しています。
vbWednesday - は、水曜日を週の初めの日として採用しています。
vbThursday - は、木曜日をむしろ曜日として運用しています。
vbFriday - は、金曜日を週の初めの日として採用しています。
vbSaturday - は、土曜日を週の初めの日として運用しています。
vbUseSystemDayOfTheWeek - は、端末の設定により定義された週の最初の曜日を使用します。
リターンパラメータ
さて、この関数は整数を返します。 つまり、その整数の意味は次の通りです。
1 - 日曜日
2 - 月曜日
3 - 火曜日
4 - 水曜日
5 - 木曜日
6 - 金曜日
7 - 土曜日
コードスニペット
Sub Weekday_Function() Dim week_day As Integer week_day = Weekday("4/27/2022") MsgBox week_day End Sub
出力します。
見ての通り、VBAの日付関数は4を返します。 これは水曜日を意味します。
関連コンテンツ エクセルVBAでFix関数を使う方法(4例)
9.VBAのWeekdayName関数
曜日を限定して表示した文字列を返す。
シンタックス :
曜日名(曜日、省略形、週の初日)
主張する。
平日 曜日を表す数値。 各曜日の数値は、firstdayofweek の設定に依存する。
を省略することができます。 曜日名を短縮するかどうかを示すブール値。 スキップの場合、デフォルトはFalseで、曜日名を省略または短縮しないことを意味する。
週の初日 オプションフィールド。 週の初めの曜日を示す数値。 様々な値を持つことができる。
があります。 初日 引数は次の値を取ることができる。
ブイビーサンデー - は、日曜日を一週間の中で最も重要な日と位置づけています。
vbMonday - は、月曜日を週の初めの日として採用しています。
vbTuesday - は、火曜日を週の初めの日として運用しています。
vbWednesday - は、水曜日を週の初めの日として採用しています。
vbThursday - は、木曜日をむしろ曜日として運用しています。
vbFriday - は、金曜日を週の初めの日として採用しています。
vbSaturday - は、土曜日を週の初めの日として運用しています。
vbUseSystemDayOfTheWeek - は、端末の設定により定義された週の最初の曜日を使用します。
コードスニペット
Sub WeekdayName_Function() Dim weekday_name As String weekday_name = WeekdayName(6) MsgBox weekday_name End Sub
出力します。
ご覧のように、上記のVBAコードは曜日名を表示します。
関連コンテンツ:ExcelのVBA WeekdayName関数の使い方(2例)
10.VBAのDateでYear関数
年を表す実数を持つVariant(Integer)を返す。
シンタックス :
年(月)
主張する。
引数 date は、Variant、数値表現、文字列表現、またはその組み合わせで、日付を表す。 日付に Null が含まれる場合は、Null も返す。
コードスニペット
Sub year_function() Dim date1, the_year date1 = #12/12/2023# the_year = Year(date1) MsgBox the_year End Sub
出力します。
ここでは、VBAのコードを実装した後に、指定した日付の年を見ることができます。
続きを読む ExcelでVBAの置換関数を使う方法(11の応用編)
11.FormatDateTime関数
この関数は、日付または時刻としてフォーマットされた式を返す。
シンタックス :
FormatDateTime(Date, [ NamedFormat ])
主張する。
日付 必須項目 フォーマットされる日付表現。
NamedFormat。 これはオプションであり、日付/時刻のフォーマットを表示する数値である。 省略された場合は、その日付/時刻のフォーマットを使用した vbGeneralDate .
があります。 名前付きフォーマット は以下の値を持つことができる。
vbGeneralDate(0)です。 日付と時刻を表示する。 日付部分がある場合は短い日付で、時刻部分がある場合は長い時刻で表示する。 両方の部分がある場合は表示される。
vbLongDate(1): パソコンの地域設定で選択した長い日付の設定を利用して、日付を描写する。
vbShortDate(2)です。 パソコンの地域設定で指定された短い日付形式を操作して、日付を表示する。
vbLongTime(3)です。 コンピューターの地域設定で指定された時間形式を採用して、時間を表示します。
vbShortTime(4)です。 24時間制(hh:mm)で時刻を表示する。
コードスニペットです。
Sub FormatDateTime_Function() d = ("2022-02-03 18:25") MsgBox ("Format 1 : " & FormatDateTime(d)) MsgBox ("Format 2 : " & FormatDateTime(d, 1)) MsgBox ("Format 3 : " & FormatDateTime(d, 2)) MsgBox ("Format 4 : " & FormatDateTime(d, 3)") MsgBox ("Format 5 : " & FormatDateTime(d, 4)") End Sub
出力します。
コードを実行すると、次のようなダイアログボックスが表示されます。
ここでは、VBAで使用できるすべての時刻と日付のフォーマットを見ることができます。
続きを読む VBA TimeValue関数の使い方(関連する6つの例)
12.VBAのCDate関数
この関数は、有効な日付と時刻の式を一般的な日付に変換します。
シンタックス :
CDate(日付)
主張する。
引数 date は、Variant、数値表現、文字列表現、またはその組み合わせで、日付を表す。 日付に Null が含まれる場合は、Null も返す。
コードスニペット
Sub Cdate_Function() Dim date1 As Variant Dim date2 As Variant date1 = CDate("Mar 11 2022") date2 = CDate("29 Sep 2023") MsgBox ("First date : " & date1 & vbCrLf & "Second date : " & date2") End Sub
出力します。
ご覧の通り、今回のVBAコードはExcelの典型的な日付形式を返しただけです。
関連コンテンツ ExcelでVBAのDIR関数を使用する方法(7例)
VBAの日付の例
以下では、VBAを使った日付に関する実用的で適切な3つの例を紹介します。 これらの例には、日付に関する問題とその解決策が含まれています。 VBAの知識を高めるために、これらの例をすべて読み、練習することをお勧めします。 それでは、さっそく始めましょう。
1.VBAで日付を使って延滞日数を計算する
overdueの意味は、遅れて起こること、期限を過ぎて起こること。 遅れて、特に、期限を過ぎて、または要件を満たすには遅すぎること。
例えば、日曜日が提出期限の課題を、火曜日になっても提出していないとします。 これを「2日分の期限切れ」と呼ぶことができます。
次のデータセットを見てください。
ここに、何人かの学生と彼らの課題提出日のデータセットがあります。 最終提出日を見ることができます。 我々の目標は、提出日に基づいて期限切れ日を見つけることです。 さて、これを達成するために、次のステップに従います。
📌 ステップス
- まず、以下を押します。 Alt+F11 をキーボードで入力すると、VBAエディターが起動します。
- 次に、以下を選択します。 挿入モジュール .
- その後、以下のコードを入力してください。
Sub overdue_days() Dim cell As Integer Dim J As Integer Dim due_date As Date due_date = #1/11/2022# For cell = 5 To 11 If Cells(cell, 4).Value = due_date Then Cells(cell, 5.Value = "Submitted Today" ElseIf Cells(cell, 4).Value> due_date Then J = due_date - Cells(cell, 4).Value J = Abs(J) Cells(cell, 5).Value = J & " Overdue Days" Else Cells(cell, 5).Value = "No Overdue" End If Next cellエンド・サブ
を使用しました。 ABS機能 をクリックすると、マイナス記号が消えます。
- その後、ファイルを保存してください。
- その後 Alt+F8 をキーボードで入力すると、「マクロ」ダイアログボックスが表示されます。
- 次に、以下を選択します。
- をクリックします。 実行 .
このように、VBAで日付を使い、延滞日数を見つけることに成功しました。
類似の読み物
- ExcelでVBAのSpace関数を使う方法(3例)
- ExcelでVBAのChDir関数を使う(4つの適切な例)
- エクセルVBAでIsNull関数を使う方法(5例)
- VBA While WendステートメントをExcelで使用する(4例)
- ExcelのVBAでSubを呼び出す方法(4例)
2.VBAで日付から生年月日を検索する
これで、特定の日付から「年」を探すことができます。 これはかなり簡単な方法です。
次のデータセットを見てください。
ここでは、ある人物の生年月日を見ることができます。 目的は、日付から生年を抽出し、さらに最後のエントリであるElizabethの生年も抽出することです。
📌 ステップス
- まず、以下を押します。 Alt+F11 をキーボードで入力すると、VBAエディターが起動します。
- 次に、以下を選択します。 インサート&モジュール .
- その後、以下のコードを入力してください。
Sub find_year() Dim last_entry As Date Dim cell As Integer For cell = 5 To 11 Cells(cell, 4).Value = Year(Cells(cell, 3).Value) If cell = 11 Then last_entry = Cells(cell, 3).Value End If Next cell MsgBox "Birth Year of last entry: " & Year(last_entry) End Sub
- その後、ファイルを保存してください。
- その後 Alt+F8 をキーボードで入力すると、「マクロ」ダイアログボックスが表示されます。
- 次に、以下を選択します。 年号を探す .
- をクリックします。 実行 .
最後に、各日付から生年を抽出することに成功していることがわかります。 また、ExcelのVBAの日付を使って、最後のエントリーの生年を見つけることができました。
3.VBAで日付に日数を追加する
ここで、date変数を定義し、それを使って日付を追加します。 これを実行するために、ここでは DateAdd この関数を使用すると、特定の日付に日、月、年を追加することができます。
次のデータセットを見てください。
ここで、いくつかの名前とそれに付随する日付が見えますが、これらの日付にさらに5日間を追加し、新しい日付を生成することが目的です。
📌 ステップス
- まず、以下を押します。 Alt+F11 をキーボードで入力すると、VBAエディターが起動します。
- 次に、以下を選択します。 インサート&モジュール .
- その後、以下のコードを入力してください。
Sub add_days() Dim first_date As Date Dim second_date As Date Dim cell As Integer For cell = 5 To 11 first_date = Cells(cell, 3).Value second_date = DateAdd("d", 5, first_date) Cells(cell, 4).Value = second_date Next cell End Sub
ここでは、DateAdd関数の引数に "d "を使っていますが、"y "や "m "に変更すれば、それぞれ年や月を追加することができます。
- その後、ファイルを保存してください。
- その後 Alt+F8 をキーボードで入力すると、「マクロ」ダイアログボックスが表示されます。
- 次に、選択します。
- をクリックします。 実行 .
このように、VBAで日付を使って日数を追加することに成功しました。 あとは、お好みに応じてコードを修正してください。
💬覚えておくべきこと
✎ VBAのDate関数は、実際には次のように動作します。 TODAY機能 をExcelで表示します。
✎ VBA DATEは、エクセルに搭載されている不揮発性関数で、電源が切れてもデータを保持することができます。
✎
基本的にVBAでは、実装時にDATE値をDATEとして保存します。
✎
そのため、日付変数を文字列/テキストとして代入しようとすると、エラーが発生します。
✎
Dateのデフォルト値は0001年1月1日0時00分00秒(午前0時)です。
結論
最後に、このチュートリアルで、VBAコードの日付に関する有用な知識の一部を提供できたと思います。 これらの指示をすべて学び、あなたのデータセットに適用することをお勧めします。 練習用ワークブックをダウンロードし、これらを自分で試してください。 また、コメントセクションで自由にフィードバックしてください。 あなたの貴重なフィードバックが、このようなチュートリアルを作成するモチベーションを維持します。
ホームページのチェックをお忘れなく Exceldemy.com Excelにまつわる様々なトラブルや解決策をご紹介しています。
新しい手法を学び続け、成長し続ける