比较两个细胞范围的颜色[VBA]

时间:2017-01-27 15:04:39

标签: excel vba excel-vba

想知道是否有人可以提供帮助。

我是CS老师,作为我目前Y10计划的一部分,我们正在研究图像是如何用二进制表示的。我创建了一个文件,鼓励用户根据提供的二进制代码重新创建一些像素艺术。

然而 - 现在这就是我完全陷入困境的地方 - 我正在尝试创建一个允许用户检查其颜色是否与最终结果相匹配的宏。我理解如何比较这两种颜色,但让它在我所拥有的大范围内工作就是它倒下的地方。 我到目前为止的代码是:

Function Inc(ByRef i As Long)
    i = i + 1
End Function


Sub CompareCellColors()
    Dim Rng1 As Range
    Set Rng1 = Range("C1:O19")
    Dim Rng2 As Range
    Set Rng2 = Range("AC1:AO19")
    Dim x As Long
    x = 0

    For Each c1 In Rng1
        For Each c2 In Rng2
            If c1.Interior.ColorIndex = c2.Interior.ColorIndex Then
                Inc x
            End If
        Next c2
    Next c1

    If x = 247 Then
        Range("A3").Value = True
    Else
        Range("A3").Value = False
    End If
End Sub

我已经尝试了一种解决方法(如果变量匹配则递增变量),但这也不起作用。

程序编译并运行,但没有准确地比较两个单元格范围(希望这种解释是有意义的!)。 x增量的当前结果是61009,但是选择只有247个单元格。

1 个答案:

答案 0 :(得分:1)

您正在将Rng1中的每个像素与Rng2中的每个像素进行比较,因为这些循环是嵌套的。我相信你想要的是在一对一的基础上进行比较。尝试改为

For a = 1 to 19 'rows
    for b = 3 to 13 'columns
        If Cells(a, b).Interior.ColorIndex = Cells(a, b + 29).Interior.ColorIndex Then
            Inc x
        End If
    Next b
Next a