Excel上級者

ExcelVBAで今日の日付を取得する際の注意点

しんたろ。

本記事では、今日の日付を取得する方法と、日付の書式を変更する方法をご紹介します。

今日の日付は「Now関数」または「Date関数」で取得できます。

日付はファイル名やセルに入力されるなど、さまざまな場面で使われるので、今日の日付の取得と入力の方法を学んでいきましょう。

期間限定でChatGPT✖️Googleスプレットシートのコンテンツ配布中!

LINEでExcelを気軽に学べる

しんたろ。
しんたろ。
Excel歴10年以上のプロ
Profile
【実績】
□2016年
海外拠点において、Excelでの業務改善による納期遵守率50%→100%達成。
□2018年
自動化を促進させ、自身の残業時間を年間240時間削減成功。
□2023年
├ブログとTwitter開始
├Excel無料相談会→即日満席
└ChatGPT×Googleスプレットシート配布で1週間で35万インプ達成

仕事ができなくて毎日上司に叱責されていた私がExcelを学んだら評価され残業を大幅に削減!現在は職場改善チームに所属し、PythonやRPAなどのツールで会社全体の改善をしています。仕事の依頼はTwitterのDMまで!
プロフィールを読む

ExcelVBA 日付関数の説明

ExcelVBAのNow関数は、2つの日付の間の日数を計算するために使用することができます。これは、一方の引数に開始日、もう一方の引数に終了日を入力することで行えます。

そして、Now関数は、2つの日付の差を返します。

これは、開始日と終了日を引き算することによって行われます。この結果は、1日のミリ秒数(86400000)で割ることができます。

また、Now関数を使用して、2つの日付間の時間数を計算することもできます。これは、開始日と終了日を差し引き、その結果を1時間あたりのミリ秒数(3600000)で割ったものです。

ExcelVBAのDate関数とは?

ExcelVBAのDate関数は、現在のシステム日時や特定の日付を取得することができます。

yearは4桁の年(1900年から9999年まで)。月 は、1(1月)から12(12月)までの整数です。日は,1から指定された年の指定された月の日数までの整数です。

引数なしで Date 関数を使用すると、現在の日付が返されます。引数として日付が入力された場合は、引数で指定された日付を返します。

Date(年, 月, 日)

例として、2022年1月1日を表す日付型の変数を生成するため次のようにします。

Dim dt As Date
dt = Date(2022, 1, 1)

日付関数を使用することで、日付を扱うVBAプログラムを作成する際に、より簡単に日付を扱うことができます。

Date関数には、日付を表す文字列を解除することもできます。例、次のようにすることで、文字列「”2022/1/1″」を日付型の変数に変換することができます。

Dim dt As Date
dt = Date("2022/1/1")

また、Excel VBAでは、日付を扱う場合、「#」で止めることで、日付型の文字列を表すこともできます。 例、次のようにすることで、日付型の文字列「”#2022 /1/1#”」を日付型の変数に変換することができます。

Dim dt As Date
dt = "#2022/1/1#"

ExcelVBAのNow関数とは?

Microsoft Excel では、このNow関数は現在の日付と時刻をシリアル番号として返します。現在の日付と時刻をワークシートのセルに挿入するために使用できます。

たとえば、次の数式は現在の日付と時刻をセル A1 に挿入します。

=Now()

結果は、システムの地域設定で指定された形式で日付と時刻として表示されます。

NowExcel の VBA (Visual Basic for Applications) コードで関数を使用することもできます。たとえば、次のように現在の日付と時刻をセルに挿入するために使用できます。

Range("A1").Value = Now

これにより、アクティブなワークシートのセル A1 に現在の日付と時刻が挿入されます。

このNow関数は日付と時刻をシリアル値として返すため、特定の形式で日付と時刻を表示するには、セルの書式を設定する必要がある場合があります。次のように、Format関数で行うことができます。

Range("A1").Value = Format(Now, "mm/dd/yyyy hh:mm:ss")

これにより、現在の日付と時刻が「mm/dd/yyyy hh:mm:ss」の形式でセル A1 に挿入されます。 (例: 「12/17/2022 14:30:00」)

Now関数をマクロで使用する場合

ExcelVBA マクロで関数を使用する方法の例を次に示します。

Sub Example()
  Dim currentTime As Date
  currentTime = Now()
  MsgBox "The current time is: " & currentTime
End Sub

このマクロを実行すると、現在の日付と時刻がメッセージ ボックスに表示されるよ。

関数を使用して、現在の時刻を type の変数に代入することにより、数値として取得することもできます。

Sub Example()
  Dim currentTime As Double
  currentTime = Now()
  MsgBox "The current time as a numeric value is: " & currentTime
End Sub

これにより、現在の時刻が数値として表示されます。これは、1899 年 12 月 30 日の午前 0 時からの日数を表します。

ExcelVBA 休日を確認する方法

今日の日付の代表的な使い方として、指定した日付が休日かどうかのチェックがあります。VBAでは「DateAdd」関数を使って簡単にチェックすることができます。

DateAdd関数は、いくつかのパラメータ、追加する日数、月数を受け取ります。

例えば、ある日付に2日と2ヶ月を足すと次のようになります。

DateAdd("d", 2, DateAdd("m", 2, "10/15/1966"))

これは、指定された日付から2日と2ヶ月が休日に当たるかどうかをチェックするものです。

さらに指定された日付が休日かどうかをチェックすることもできます。
たとえば、祝日のテーブルを用意して与えられた日付がそのテーブルの祝日のいずれかに一致するかどうかをチェックする条件を設定します。

Function IsHoliday(dateToCheck As Date) As Boolean
  ' 日付を文字列に変換します。
  Dim dateString As String
  dateString = Format(dateToCheck, "yyyy/mm/dd")
  
  ' 日付を休日かどうかを判断する条件式を記述します。
  ' 例えば、国民の祝日である場合は True を返します。
  If dateString = "2022/01/01" Or dateString = "2022/01/02" Then
    IsHoliday = True
  Else
    IsHoliday = False
  End If
End Function

関数を使用するには、次のようにします。

Sub TestFunction()
  Dim dateToCheck As Date
  dateToCheck = #1/1/2022#
  
  If IsHoliday(dateToCheck) Then
    MsgBox "休日です。"
  Else
    MsgBox "平日です。"
  End If
End Sub

このようにして、VBA を使用して Excel シート内で休日を確認することができます。

上記の例では、2022 年 1 月 1 日と 1 月 2 日が休日として定義されています。そのため、1 月 1 日を確認すると休日であると判定されます。によって休日が異なるため、休日を基準条件式を適切に記述する必要があります。

ExcelVBAの日付加算の使い方

日付を表す変数を宣言
Dim dt As Date
変数に日付を代入
dt = DateValue("2020/01/01")
変数に日を加算
dt = dt + 10 ' 10日加算
加算した日付を使用
Debug.Print dt ' 2020/01/11
日付を計算するときは、日付を表す変数を使用する必要がある。
Debug.Print "2020/01/01" + 10 ' エラー
また、日付を計算するときは変数を使用する必要がある。
Debug.Print DateValue("2020/01/01") + 10 ' エラー

上記の例では、日付を計算する必要があり日付を表す変数を使用し、その変数に日付を計算することで、新しい日付を計算することができます。

ExcelVBA IsDateの使い方

IsDate関数は、指定した値が有効な日付であるかどうかを確認するために使用します。

IsDate関数の使用方法は、IsDate(Expression)という構文になります。

Expressionパラメータには、文字列またはDateデータ型を指定します。

IsDate関数はブール値を返します。Expressionが有効な日付である場合、この関数はTrueを返し、そうでない場合はFalseを返します。

たとえば、「1/1/2000」という値が有効な日付であるかどうかを確認するには、次のコードを使用します。

IsDate(“1/1/2000”)とすると、Trueが返されます。これは、ユーザーの入力を検証したり、特定の値が有効な日付であるかどうかをチェックするのに便利です。

以下に、IsDate 関数の使い方を示します。

IsDate(expression)

コードの使い方は以下の例を参考ください。

Dim dt As Date

dt = "2022/12/18"
If IsDate(dt) Then
  ' 日付として有効なので、処理を行います。
Else
  ' 日付として無効なので、処理を行いません。
End If

IsDate関数を使用することで、日付として有効な文字列かどうかを確認することができます。

つまり、IsDate関数で判定できる日付の形式は、Excelのセルに入力された日付の形式と同じです。 IsDate関数でも「2022/12/18」を日付として有効と判定できます。

ExcelVBA IsNumericの使い方

IsNumeric関数は、与えられた値が有効な数値であるかどうかをチェックするために使用します。IsNumeric関数の構文は、IsNumeric(Expression)です。

Expression パラメータには、文字列または数値データ型を指定します。

IsNumeric関数はブール値を返します。Expressionが有効な数値である場合、この関数はTrueを返し、そうでない場合はFalseを返します。

たとえば、「123」という値が有効な数値であるかどうかを調べるには、次のようなコードを使用します。IsNumeric(“123”)とすると、Trueが返されます。これは、ユーザーの入力を検証したり、特定の値が有効な数字であるかどうかをチェックするのに便利です。

以下に、IsNumeric 関数の使い方を示します。

IsNumeric(expression)

コードの使用方法はこちらを参照ください。

Dim num As Variant

num = "123"
If IsNumeric(num) Then
  ' 数値として有効なので、処理を行います。
Else
  ' 数値として無効なので、処理を行いません。
End If

IsNumeric関数を使用することで、数値として有効な文字列かどうかを確認することができます。

IsNumeric関数で判定できる数値の形式は、Excelのセルに入力された数値の形式と同じです。 つまり、Excelのセルに “123” のような形式で数値を入力できる場合は、IsNumeric関数でも「123」を数値として有効と判定できます。

全会社員を残業地獄から救いたい
本ブログの有効活用方法
1
Concept
初心者に分かりやすい解説

しんたろ。ブログでは「少しでも残業を減らしたい」「時間効率を上げて新しいことにチャレンジしたい」「仕事で評価を上げて年収を上げたい」そんなあなたに向けて私が学んできたノウハウを最短ルートで教えるExcelブログとなっています。

覚えておくべき関数や操作方法を徹底解説!

2
Concept
Excelを最短で
習得する方法を解説

「独学で習得できる気がしない」そんな方に効率よく習得できる記事を書きました。

本や動画を紹介していますが、やはり一番効率の良い習得方法は、講師にわからないことを質問できる『オンラインスクール』です。

3
Concept
Excelが大活躍!
会社員でも不就労所得を作れる。

「会社の収入だけでは不安」そう思い出会った副業がブログでした。書いた記事たちが、あなたが寝ている間もずっと働いてくれます。『不就労』の完成です。

記事を書く際の様々な分析にExcelがとても役立ちます。私は2023年末までにブログで脱サラする予定です!

あなたもブログで脱サラしましょう!

ABOUT ME
しんたろ。
しんたろ。
Excel歴10年以上のプロ
【実績】
□2016年
海外拠点において、Excelでの業務改善による納期遵守率50%→100%達成。
□2018年
自動化を促進させ、自身の残業時間を年間240時間削減成功。
□2023年
├ブログとTwitter開始
├Excel無料相談会→即日満席
└ChatGPT×Googleスプレットシート配布で1週間で35万インプ達成

仕事ができなくて毎日上司に叱責されていた私がExcelを学んだら評価され残業を大幅に削減!現在は職場改善チームに所属し、PythonやRPAなどのツールで会社全体の改善をしています。仕事の依頼はTwitterのDMまで!
記事URLをコピーしました