excel - VBA - 比较两张工作表并突出显示更改
问题描述
我正在尝试比较两张纸。sheet 的结构完全一样 -> Sheet1 中的单元格 AD4 应该与 Sheet2 中的 AD4 相同,如果不是,则突出显示 AD4 单元格。只要数据存在,就应该这样做。
下面的代码不起作用,但它没有显示任何错误消息。
Sub CompareAndHighlightDifferences()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range, a As Range
Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")
With w1
For Each c In .Range("AD4", .Range("AD" & Rows.Count).End(xlUp))
Set a = w2.Columns(30).Find(c.Value, LookAt:=xlWhole)
If Not a Is Nothing Then
If .Cells(c.Row, c.Column).Value <> w2.Cells(a.Row, a.Column) Then
.Cells(c.Row, c.Column).Font.Color = vbRed
End If
End If
Next c
End With
End Sub
请问您有什么建议吗?
非常感谢!
- - - - - - - - - - -编辑 - - - - - - - - - - -
Sub CompareAndHighlightDifferences()
Dim w1 As Worksheet, w2 As Worksheet
Dim c As Range
Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")
For Each c In w1.Range("AD4", w1.Range("AD" & Rows.Count).End(xlUp))
If w1.Cells(c.Row, c.Column).Value = w2.Cells(c.Row, c.Column).Value Then
w1.Cells(c.Row, c.Column).Interior.Color = vbRed
End If
Next c
End Sub
解决方案
我会使用这样的东西:
Sub CompareAndHighlightDifferences()
Dim w1 As Worksheet, w2 As Worksheet
Set w1 = Sheets("2019 Project Detail")
Set w2 = Sheets("2019 Project Detail SOURCE")
With w1
For Each cel In .UsedRange
If cel.Value <> w2.Cells(cel.Row, cel.Column).Value Then cel.Font.Color = vbRed
Next cel
End With
End Sub
编辑:如果您的工作表受到保护,您应该w1.Unprotect
在开头和w1.Protect
结尾添加。
推荐阅读
- unity3d - Unity Vimeo SDK - CORS 和 WebGL 的问题
- module - 为 ejabberd 创建自定义模块时出错
- python - Python - 在同一索引处删除多个子列表的元素
- javascript - 尝试使用方法在 OOP 中为轮播设置间隔
- css - 我的列表没有正确对齐,不知道如何修复
- android - NestedScrollView 内的 RecyclerView 不起作用
- javascript - 如何在反应中实现动态div的拖放?
- perl - die 函数与 use 函数一起使用时会产生语法错误
- javascript - 过滤器从数组到 Json 格式的转换,用于 devextreme
- c# - 如果一个函数依赖于另一个函数,你如何用模拟数据替换该内部函数以进行单元测试?