对于每个循环将不起作用在一张纸上search值并在另一张纸上更改值

我有一个表3列A的真值和列表,以及表2列A上的代码列表。如果表A3上的值是= True,那么我希望表格A5上的值应为红色。 如果表格A6上的值是= True,那么我希望表格A6上的值应该是红色的。 这应该沿着表2和表3中的列A向下移动,直到数据用完。 到目前为止,我已经得到它的工作列A的第一个单元格,但不能让For Each循环工作。 任何帮助将不胜感激。

Sub compare_cols() Dim myRng As Range Dim lastCell As Long 'Get the last row Dim lastRow As Integer lastRow = ActiveSheet.UsedRange.Rows.Count 'Debug.Print "Last Row is " & lastRow Dim c As Range Dim d As Range Set c = Worksheets("Sheet3").Range("A5:25") Set d = Worksheets("Sheet2").Range("A5:25") Application.ScreenUpdating = False For Each cell In c For Each cell In d If c.Value = True Then d.Interior.Color = vbRed End If Next Next Application.ScreenUpdating = True End Sub 

一个更有效的解决scheme不一定在其他的两个循环内。 取而代之的是,循环遍历你想要检查的范围,然后引用单元格Address属性来标识要突出显示的新单元格。

检查下面的代码,让我知道,如果你明白了

 Sub ColorOtherSheet() Dim wsCheck As Worksheet Dim wsColor As Worksheet Dim rngLoop As Range Dim rngCell As Range Set wsCheck = Worksheets("Sheet3") Set wsColor = Worksheets("Sheet2") Set rngLoop = Intersect(wsCheck.UsedRange, wsCheck.Columns(1)) For Each rngCell In rngLoop If rngCell.Value = True Then wsColor.Range(rngCell.Address).Interior.Color = vbRed End If Next rngCell End Sub