我需要跟踪材料的过期日期。为此,我需要搜索特定的时间间隔(例如,之前的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的物料过期日期?
答案 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