条件格式单元格错误



我在下面的代码是检查两个工作表,以查看特定列中插入的值是否相似。例如,它查看工作表 1 中插入的列 A 中的值是否与工作表 2 列 B中插入的值相同。如果是,则工作表 A1 列中的单元格保持">白色",否则它们将变为">红色"。 代码工作没有任何问题,而且速度非常快。

我的问题如下。比方说:

  • 我需要在工作表1 - A列,单元格A2到A5中插入一个值,该值与工作表2列B中的值相匹配。
  • 工作表 2 B 列具有以下值:汽车、房屋、花园、城市、国家/地区。
  • 如果在 A2
  • 中我写汽车,A3 我留空,A4国家和 A5汽车,那么 A2、A4 和 A5 将保持">白色",因为这些值在工作表 2 - B 列中。但是,即使单元格为空,A3 也会变成红色- 这是我的问题。如何使代码不考虑该单元格是否为空?它不应该变成红色,因为我将单元格留空并且它没有比较任何东西......

我希望我以某种方式解释自己。感谢您的帮助!

Private Sub CommandButton1_Click()
Set wb = Excel.ActiveWorkbook
Set aRec = wb.Worksheets(1)
Set bRec = wb.Worksheets(2)
Application.ScreenUpdating = False
For a = 2 To aRec.Cells(Rows.Count, "A").End(xlUp).Row
match = Application.match(aRec.Cells(c, 1).Value, bRec.Columns(2), 0)
If IsError(match) Then
aRec.Cells(c, 1).Interior.Color = RGB(255, 0, 0)
Else
aRec.Cells(c, 1).Interior.Color = RGB(255, 255, 255)
End If
Next c
End Sub

喜欢吗?

Private Sub CommandButton1_Click()
Set wb = Excel.ActiveWorkbook
Set aRec = wb.Worksheets(1)
Set bRec = wb.Worksheets(2)
Application.ScreenUpdating = False
For a = 2 To aRec.Cells(Rows.Count, "A").End(xlUp).Row
Match = Application.Match(aRec.Cells(a, 1).Value, bRec.Columns(2), 0)
If IsError(Match) And Not IsEmpty(aRec.Cells(a, 1)) Then
aRec.Cells(a, 1).Interior.Color = RGB(255, 0, 0)
Else
aRec.Cells(a, 1).Interior.Color = RGB(255, 255, 255)
End If
Next a
End Sub

使用正确的循环变量,选项显式,类型声明和切换屏幕更新回来

Option Explicit
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim aRec As Worksheet
Dim bRec As Worksheet
Dim a As Long
Dim Match As Variant
Set wb = ActiveWorkbook
Set aRec = wb.Worksheets(1)
Set bRec = wb.Worksheets(2)
Application.ScreenUpdating = False
For a = 2 To aRec.Cells(Rows.Count, "A").End(xlUp).Row
Match = Application.Match(aRec.Cells(a, 1).Value, bRec.Columns(2), 0)
If IsError(Match) And Not IsEmpty(aRec.Cells(a, 1)) Then
aRec.Cells(a, 1).Interior.Color = RGB(255, 0, 0)
Else
aRec.Cells(a, 1).Interior.Color = RGB(255, 255, 255)
End If
Next a
Application.ScreenUpdating = True
End Sub

最新更新