我在表3列A上有一个真值和假值列表,在表2列A上有一个代码列表。如果表3 A5上的值是= True,那么我想要表2上的值A5应该是彩色的红色。如果工作表3 A6上的值为= True,那么我希望工作表2上的值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
答案 0 :(得分:1)
更有效的解决方案不一定是彼此之间的2个循环。相反,遍历您要检查的范围,并引用单元格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