この例では、Excel VBAで日付と時刻を比較する方法を教えています。日付と時刻は、Excelでの数値として格納され、あなたは番号の形式に依存してご覧何1月0、1900年以来の日数を数えています。

列Aでいくつかの数字を入力します。1.

Numbers

2.これらの数字は、日付です。これは、日付のフォーマットを気にすることなく、いくつかの日付を入力するのに最適な方法です。日付への書式を変更します(右列Aのヘッダ、セルの書式設定をクリックして日付を選択します)。

結果:

Dates

注:日付は米国のフォーマットです。最初の月、日セカンド。フォーマットのこのタイプは、あなたの窓地域の設定に依存します。

ワークシート上のコマンドボタンを配置し、次のコード行を追加します。

Integer型の変数iを宣言3.。

Dim i As Integer

次のループの追加4。

For i = 1 To 5

Next i
  1. Date関数は、時間のない現在の日付を返します。現在の日付(2020年3月13日)を含むすべてのセルを強調するために、ループに次のコード行を追加します。

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

結果:

Dates Equal To

以前の2019年4月19日より、すべての日付を強調するために、ループに次のコード行を追加します6。

If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed

結果:

Dates Earlier Than

7.しかし何回について、我々はあなたが言うのを聞きます。彼らは小数です。一般的な形式に切り替えし、小数番号に番号を変更します。

Decimal Numbers

8.今、「日付と時刻」の形式にフォーマットを変更します。

Date and Time Format

結果:

Dates and Times

9.あなたが現在の日付を含むすべてのセルを強調表示したい場合は、私たちはもう5でコード行を使用することはできません。何故なの? A列の数字は今小数されているため。日付(整数)とそれを比較すると、いずれかの一致が得られないでしょう。 (それだけで正確に真夜中に2020年3月13日との一致を与えるだろう!)次のコード行は、作業を行います。

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

説明:我々は単にInt関数を使用します。 Int関数は、最も近い整数までの番号を丸め。このように、我々は時間なしの日付を取得し、日付とこれらの日付を比較することができます。

結果:

Dates Without Times Equal To

10.朝の時間を含むすべてのセルを強調表示するために、次のコード行を追加します。

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

説明:我々は唯一ので、したがって、我々は整数部分を引く小数を必要としています。正午(日途中)は0.5として表されます。

小数は0.5朝時代よりも下げます。

結果:

Times in the Morning