首页 > 解决方案 > Excel 宏大部分时间都在工作,但并非总是如此

问题描述

我制作了以下宏(解释如下):

Sub SupprimeContratsExpirés()
Dim i As Integer
i = 2
While Cells(i, 1) <> ""
    If IsDate(Cells(i, 9)) Then
        If Cells(i, 2) = Cells(i - 1, 2) Or Cells(i, 2) = Cells(i + 1, 2) Then
            Rows(i).EntireRow.Delete
            i = i - 1
        End If  
    End If   
    i = i + 1
Wend
End Sub

宏正在循环,直到它在第一列中找到一个空单元格。找到一个空单元格意味着宏的结束。在循环中,第一个条件是检查相应行的第 9 列中是否有日期(合同结束)。如果有日期,我希望仅当该行代表的人由另一行代表时才删除该行。这是第二个 if 语句。它检查第 2 列中的数据(与特定工作人员相关的数字)是否与刚好低于或高于的数据相同。如果是这种情况,则删除当前行并减少我的索引(以保持相同的行号,因为它稍后会增加)。

它大部分时间都在工作,但有时 Excel 告诉我在我的第二个 if 语句的行上存在类型不兼容......

谁能解释我为什么?

标签: excelvba

解决方案


我发现了我的错误!问题是我用一个公式替换了一个标题,这个公式有时会因为删除了一些行而导致引用错误:)


推荐阅读