在更改/不更改时突出显示/取消突出显示单元格和依赖项

时间:2013-12-03 19:32:11

标签: arrays vba excel-vba types na

我的最终目标是在细胞与电子表格打开时不同时突出显示细胞。这包括用户直接编辑的单元格,以及因为它们依赖于用户更改的单元格而更改的单元格。如果用户将单元格更改回原始值,我想突出显示消失。

我的方法是在打开工作簿时将包含感兴趣的单元格的范围写入全局2d数组。然后,我编写了一个worksheet_change事件,它将更改的单元格及其依赖项与打开工作簿时存储在数组中的相应值进行比较。

Private Sub Workbook_Open()
    arr_1 = Sheet26.Range("A1:AR331")
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

Dim dep As Range
Dim r As Range


'Check the changed cell to see if it has changed from when the workbook was opened
If Target <> arr_1(Target.Row, Target.Column) Then

    'If cell has changed, mark it red
    Target.Interior.ColorIndex = 3

    'Check to see if cells that depend on the changed cell have changed
    Set dep = Target.Dependents
    For Each r In dep

        'Check to see if the dependent cell(s) is within the print area
        If Not Intersect(r, Range("A1:AR331")) Is Nothing Then
            If r <> arr_1(r.Row, r.Column) Then
                'if cell has changed mark it red
                r.Interior.ColorIndex = 3
            Else

                'if cell hasn't changed unhighlight it
                r.Interior.ColorIndex = 0
            End If
        End If
    Next r

Else

'If the target cell matches the value stored in the array, unhighlight the cell
Target.Interior.ColorIndex = 0

End If

End Sub

我的问题是处理包含#N / A的单元格。当我将单元格写入数组时,它将存储为“”。然后,当我将存储在单元格中的#N / A与存储在数组中的“”进行比较时,我得到类型不匹配。有办法解决这个问题吗?此外,如果我的总体方法不是解决这个问题的最佳方法,我会欢迎另一种方法。

提前致谢!

1 个答案:

答案 0 :(得分:0)

刚刚使用Cstr结束。不知道为什么到现在为止我无法工作。