根据两个日期之间的总时间隐藏行

时间:2018-12-01 14:42:45

标签: excel vba hide datediff

仅当生效日期和结束日期之间的差额大于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

1 个答案:

答案 0 :(得分:0)

由于除了您想将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

如果2返回第一行和前两列中的日期的值大于或等于3,则这将隐藏DateDiff()6行。如果该值较小,将使其可见。当然,您可以根据需要轻松地编辑列和行的值。

Cells(1, 1)将在第一行和第一列中返回单元格的值(在您的情况下为日期),在第一行和第二列中返回Cells(1, 2)

还请注意,如果第一个参数为DateDiff()并且月份之差为6,则"m"将在每月的第6天返回。如果您想接近6个月,建议您改几天使用"d",并将条件设为>= 180或其他更符合您需求的内容。