只有当生效日期和结束日期之间的差异大于6个月时,我才希望显示3行。我知道如何隐藏行以及datediff是如何工作的,但不知道如何将它们组合在一起。我还需要代码在输入日期后立即运行。目前,它只在我为子选择"运行"时运行
这是我目前拥有的代码,它可以工作,但一旦我运行宏,它就会消失。。。。我需要它立即发生一旦日期输入
当前宏,但仅在"运行"时有效
Sub Priority()
If Range("K68") > DateSerial(Year(Range("H68")), Month(Range("H68")) + 6, Day(Range("H68"))+1) Then
Worksheets("Sheet1").Range("72:74").EntireRow.Hidden = False
Else
Worksheets("Sheet1").Range("72:74").EntireRow.Hidden = True
End If
If Range("K68") > DateSerial(Year(Range("H68")), Month(Range("H68")) + 6, Day(Range("H68"))+1) Then
Worksheets("Sheet1").Range("75:76").EntireRow.Hidden = True
Else
Worksheets("Sheet1").Range("75:76").EntireRow.Hidden = False
End If
End Sub
由于您除了希望将DateDiff()
和Range.Hidden
结合在一起之外,没有提供更多信息,因此我将为您举一个例子。
If DateDiff("m", Cells(1, 1), Cells(1, 2)) >= 6 Then
Rows(2).Hidden = False
Rows(3).Hidden = False
Rows(4).Hidden = False
Else
Rows(2).Hidden = True
Rows(3).Hidden = True
Rows(4).Hidden = True
End If
如果DateDiff()
为第一行和前两列中的日期返回大于或等于6
的值,则这将隐藏行2
至3
。如果该值较小,则会使它们可见。当然,您可以根据需要轻松地编辑列和行的值。
Cells(1, 1)
将返回第一行和第一列中单元格的值(在您的情况下是日期(,Cells(1, 2)
将返回第一排和第二列。
还请注意,如果第一个参数是"m"
,并且月份的差值是6
,则无论在哪个月的哪一天,DateDiff()
都将返回6
。如果你想接近6个月,我建议你使用"d"
几天,并将条件设置为>= 180
或其他更符合你需求的条件。