如何检查一个日期是否大于另一个日期?

时间:2019-04-12 12:44:07

标签: excel vba

我需要跟踪材料的过期日期。为此,我需要搜索特定的时间间隔(例如,之前的80天和今天的40天)。

首先,我将今天的日期设置为dd / mm / yyyy格式。然后,从用户那里进行两次输入,以便第一个输入确定今天之后的日期(例如x),第二个输入确定今天之前的几天(例如y)。

现在,我需要将今天+ x和今天-y日期与材料的到期日期进行比较。但是,我被困住了。

我将后方和进一步定义为inputBox变量。输入到后面的值将分配给变量x,并在今天之前指定“后”天,输入到后面的值将分配给变量y,并在之后的“更多”天内给我们。

在这里,我还标识了今天的日期(“ G1”单元格)和带有x和y日期的时间间隔

Public Sub date()

Dim DateToProcess As Date

DateToProcess = Date

BUBD.Cells.Range("G1") = DateToProcess

rear = InputBox("How many days do you want to trace back?")
x = DateAdd("d", -rear, CDate(Range("G1")))


further = InputBox("How many days after do you want to check?")
y = DateAdd("d", further, CDate(Range("G1")))

End Sub

然后我要比较材料BUBD与x和y

If rngRisk(j) > x Or rngRisk(j) < y 

当我将x和y与rngRisk列中的过期日期进行比较时,所有值都会被粘贴,而不管间隔是什么

如何比较x和y的物料过期日期?

2 个答案:

答案 0 :(得分:1)

如果我正确理解您的代码无法比较日期。

我将假设rngRisk(j)是一个Excel单元格,在这种情况下,可能发生的情况是该单元格中的数据类型格式错误。如果单元格的格式设置为“日期”,则可以执行rngRisk(j).Value2。它应该返回日期或从1900年到指定日期的天数。

OBS:x和y应该为日期或长型以便比较日期

如果该单元格为日期格式

If rngRisk(j).Value2 > x

如果单元格为文本格式

If CDate(rngRisk(j).Value2) > x

编辑:

比较日期的样本

Sub CompareDates()

Dim rngDates As Range
Dim initialDate As Date
Dim finalDate As Date
Dim dateInColumn As Variant

initialDate = Date ' today
finalDate = Date + 3 ' 3 days from now

Set rngDates = ActiveSheet.Range("b2:b21") ' range with dates

For Each dateInColumn In rngDates

    If dateInColumn.Value2 > initialDate And dateInColumn.Value2 < finalDate Then

        MsgBox CDate(dateInColumn.Value2) & " is in between " & initialDate & " and " & finalDate

    End If

Next

结束子

答案 1 :(得分:0)

欢迎!

首先,始终在代码Option Explicit之前使用Subs。 这将迫使您声明变量,从而避免与数据类型有关的错误。

第二,x,y和rngRisk应该声明为date,以便可靠地与日期进行比较。

最后,您可以像这样将整数添加到声明为日期的变量中

dim tomorrow as date
tomorrow = Date + 1