根据可变范围的细胞的内容填写细胞

时间:2016-05-06 16:26:08

标签: excel vba excel-vba

在我的电子表格中,我有一个包含项目编号的列中的数据列表。给定相邻单元格中的值("' 1 Quad"或任何值A-D),在同一列中不应存在具有重复项目编号的行或具有重复项目编号的8行。如果项目编号多于或少于所需数量(重复数字或错过的数字太多),那么我希望突出显示相同项目编号的整个可变范围(我只是使用Fill)。

   For i = 3 To (mainRow - 1)
    k = i
    j = i
    If Range("G3") = "'1 Quad" Then
        If Range("E" & i).Value > (Range("E" & (i + 1)).Value - 1) Then
            Range("E" & i, "E" & (i + 1)).Interior.Color = RGB(255, 0, 0)
            i = i + 1
        End If
        If Range("E" & i).Value < (Range("E" & (i + 1)).Value - 1) Then
            Range("E" & i, "E" & (i + 1)).Interior.Color = RGB(0, 255, 0)
            i = i + 1
        End If
    ElseIf Range("G3").Value = "A" Or "B" Or "C" Or "D" Then
        Do
            If Range("E" & j).Value = Range("E" & (j + 1)).Value Then
                j = j + 1
            End If
            If Range("E" & j).Value <> Range("E" & (j + 1)).Value Then
                If j < 8 Then
                    For k = i To j
                        Range("E" & i).Interior.Color = RGB(255, 0, 0)
                    Next k
                End If

                If j > 8 Then
                    For k = i To j
                        Range("E" & i).Interior.Color = RGB(0, 255, 0)
                    Next k
                End If
                Exit Do
            End If
        While j < (mainRow - 1)
        i = k
    End If

Next i

使用此代码,我收到错误&#34;结束如果没有阻止如果&#34;根本不是这种情况。如果我删除最后一个&#34;结束IF&#34;,我会收到&#34;下一个没有For&#34;错误。提前谢谢你的帮助。

**我编辑了代码以包含结尾ifs并仍然收到相同的错误。

1 个答案:

答案 0 :(得分:2)

您缺少3个结束If,并且您的Do-While语法已关闭。试试这个:

    Do While j < (mainRow - 1)
        If Range("E" & j).Value <> Range("E" & (j + 1)).Value Then
            If j < 8 Then
                For k = i To j
                    Range("E" & i).Interior.Color = RGB(255, 0, 0)
                Next k
                Exit Do
            End If
            If j > 8 Then
                For k = i To j
                    Range("E" & i).Interior.Color = RGB(0, 255, 0)
                Next k
                Exit Do
            End If
        End If
    Loop