【问题标题】:How to check whether one date is bigger than the other?如何检查一个日期是否比另一个大?
【发布时间】:2021-06-28 01:05:59
【问题描述】:

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

首先,我以 dd/mm/yyyy 格式设置今天的日期。然后,从用户那里获取两个输入,第一个是识别今天之后的日期(比如 x),第二个输入是今天之前多少天(比如 y)。

现在,我需要将 (today + x) 和 (today - y) 日期与材料的有效期进行比较,以便材料的保质期是否在 [y,x] 区间内。但是,我被卡住了。

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

在这里我用 x 和 y 日期确定今天的日期(“G1”单元格)和时间间隔

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 进行比较?

【问题讨论】:

  • 我们没有看到您的所有代码,但也许这可以工作。 If CDate(rngRisk(j)) &gt; x And CDate(rngRisk(j)) &lt; y Then ….
  • 能否提供完整的 if 语句和一些示例数据?
  • 你想要And 而不是Or

标签: excel vba


【解决方案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

结束子

【讨论】:

  • 您好! rngRisk 是一个包含材料到期日期的 Excel 列。我需要将该范围内的每个值与 x 和 y 进行比较,如果日期在 x 和 y 之间,则将它们写在另一列中。
【解决方案2】:

欢迎!

首先,始终在代码的最顶部使用Option Explicit,然后再使用Subs。 这将强制您声明变量,从而避免与数据类型有关的错误。

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

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

dim tomorrow as date
tomorrow = Date + 1

【讨论】:

  • 有点帮助,但现在回答了 OP 的问题。你的回答中不应该有问题。
  • @MrDogme 你是对的。这真的是一个修辞问题,我没想到 OP 会回答。但是,我确实明白您的意思,并对其进行了编辑。感谢您指出这一点。
猜你喜欢
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 2020-03-20
相关资源
最近更新 更多