VBA循环错误

时间:2016-09-08 19:21:19

标签: excel vba excel-vba loops

我在Excel中编写VBA相对较新。在Excel工作表中,我在多个列的单行中发生了事件。这些事件仅仅通过它们的颜色来表示(除了它们是空白单元格)。想象一下,细胞A1到G1的颜色为红色,H1到V1的颜色为蓝色。

我正在尝试编写一个子,告诉我细胞何时改变颜色。使用我当前的代码,在下面的文本中,Excel停止响应并弹出错误代码“运行时错误'-2147417848(80010108)'”。我不确定问题出在哪里。

Sub colorReader()

    Set a = ActiveCell

    Range("C8").Select

    Dim cellColor As String
    cellColor = ActiveCell.Interior.Color
    MsgBox (cellColor)

    Do While cellColor = "13408767"
        a = ActiveCell.Offset(, 1)
        If cellColor <> "13408767" Then
            MsgBox ("end color")
        End If
    Loop

End Sub

2 个答案:

答案 0 :(得分:2)

您的ActiveCell永远不会改变。我想你想循环遍历细胞,只测试你发现的细胞颜色是否与同一行中细胞的细胞颜色不同,但只是一列。像这样

for i= 3 to 100 'or whatever your last column number happens to be
    'This tests to see if the interior color of a cell is different from
    'the on in the same row but the next column over
    if cells(8, i).Interior.ColorIndex <> cells(8, i+1).Interior.ColorIndex then
        MsgBox("color changes")
    end if
next i

我猜你会想要用有用的东西替换MsgBox("color changes"),告诉你颜色发生了什么变化,比如MsgBox("Column " & i + 1 & " had a change of color from the column immediately to the left of it.")

答案 1 :(得分:0)

你的细胞参考可以做一些工作,通常被认为是不好的。选择一些东西。您还需要移动范围,每次移动范围a下面的代码。试试这个:

Sub colorReader()
dim a as range
Set a = activeworksheet.Range("C8")


Dim cellColor As String
cellColor = ActiveCell.Interior.Color
MsgBox (cellColor)

Do While cellColor = "13408767"
    a = a.Offset(, 1)
    If cellColor <> "13408767" Then
        MsgBox ("end color")
    End If
Loop
End Sub