仅当生效日期和结束日期之间的差额大于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
答案 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
或其他更符合您需求的内容。