输入VBA以隐藏行日期

时间:2018-01-23 00:51:36

标签: excel-vba vba excel

我有一个不断增长的电子表格,我希望在同一列中的特定单元格输入日期后隐藏行。我已经尝试了下面的2 vbas,无法按照我希望的方式让他们工作。输入日期的列为H或8,列为标题为"里程碑完成日期"。

代码#1:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 8 And Target.Value <> "" Then
        Target.EntireRow.Hidden = True
    End If
End Sub

代码#1的问题是用户可以按Enter键并且行被隐藏。如果单元格包含日期(mm / dd / yyyy),我只希望隐藏行。

代码#2

Option Explicit

Private lastSelectedCell As Range

Private Sub Worksheet_Activate()
    Set lastSelectedCell = Range("A1")
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' If the most recently selected cell was in column 8 ('H')
    If (lastSelectedCell.Column = 8) Then
        ' If the previously selected cell was a date on or before today
        If ((lastSelectedCell.Value <= Date) And (lastSelectedCell.Value > 0)) Then
            ' Hide the entire row
            Rows(lastSelectedCell.Row).EntireRow.Hidden = True
        End If
    End If
    Set lastSelectedCell = Target
End Sub

使用Code#2,我不断收到运行时错误&#34; 91&#34;对象变量或未设置块变量。我无法解决这个问题。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我喜欢你的Code#1,只有一点微小的变化:

IsDate()

我喜欢tab-to-tab-stop,因为它可以说明1/22/2018是日期而43122不是。