类型不匹配:代码可以正常工作数月,现在没有

时间:2018-11-19 16:40:47

标签: excel vba excel-vba

我已经运行了一段时间了(我使用它根据单元格中的日期来隐藏/取消隐藏行),但是突然之间它今天停止了工作;我是VBA的新手,所以我尝试查找它并找到问题,但无济于事...我确保所有引用的单元格都采用日期格式,但仍然收到Type Mismatch错误,并且当错误弹出时,实际上并没有给我进行调试的选项。 (Office Standard Excel 2010)

任何提示将不胜感激!

Sub HideRowsDate()
Dim cell As Range
For Each cell In Range("B6:B66")
    If IsDate(cell.Value) Then
        If DateValue(Format(cell.Value, "dd/mm/yyyy;@")) > DateValue(Format(Range("AA1"), "dd/mm/yyyy;@")) Then
            'cell = cell.Value
            cell.EntireRow.Hidden = True
        End If
    End If
    If IsDate(cell.Value) Then
        If DateValue(Format(cell.Value, "dd/mm/yyyy;@")) <= DateValue(Format(Range("AA1"), "dd/mm/yyyy;@")) Then
            'cell = cell.Value
            cell.EntireRow.Hidden = False
        End If
    End If
Next

End Sub

1 个答案:

答案 0 :(得分:0)

未经测试:

Sub HideRowsDate()

    Dim cell As Range, dt

    If IsDate(Range("AA1").Value) Then '<< check for date in AA1
        dt = Range("AA1").Value
        For Each cell In Range("B6:B66").Cells
            If IsDate(cell.Value) Then
                cell.EntireRow.Hidden = (cell.Value > dt) 'will be either True or False...
            End If
        Next
    Else
        MsgBox "AA1 is not a date!"
    End If

End Sub