【发布时间】:2016-05-06 16:26:07
【问题描述】:
在我的电子表格中,我在包含项目编号的列中有一个数据列表。给定相邻单元格中的值(“'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
使用此代码,我收到错误“End If without Block If”,这似乎根本不是这种情况。如果我删除最后一个“End IF”,我会收到“Next without For”错误。提前感谢您的帮助。
**我编辑了代码以包含结束 ifs,但仍然收到相同的错误。
【问题讨论】:
-
你的两个
If J < 8和If J > 8没有结束End If我不认为。 -
我把它们放在那里,但收到了同样的错误(刚刚再次验证)。无论如何,它们都会导致退出 do 循环。
-
当 J=8 时会发生什么事情吗?也许不是,但你遇到的情况是它不是 8,所以我想我会问你的意思是 >= 或
-
您最终需要将这些 endif 恢复原状。每个 IF 语句都需要结束 if。(可能是单行 if 除外)。如果您从 IF 语句直接向下看,则使用选项卡式格式,它应该在某些时候与 ENDIF 对齐。
-
是的,当j=8时,应该退出do循环。我将两个“exit Do”从 if 语句中移出,并将其提高了一级。谢谢你的收获。