【发布时间】:2015-05-15 07:25:23
【问题描述】:
Sub ChangeColor()
Dim rCell As Range
Dim FinalRow As Long, x As Long
Dim NextRow As Long
With Sheet1
For Each rCell In .Range("H2", .Cells(.Rows.Count, 8).End(xlUp)).Cells
If rCell.Value > Date + 1 Then
rCell.Interior.Color = vbRed
ElseIf rCell.Value < Date - 15 Then
rCell.Interior.Color = vbYellow
Else
rCell.Interior.Color = vbGreen
End If
Next rCell
FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
' Loop through each row
For x = 2 To FinalRow
' Decide if to copy based on column D
If ((Cells(x, 8).Interior.Color = vbRed) Or (Cells(x, 8).Interior.Color = vbYellow)) Then
Cells(x, 1).Resize(1, 33).Copy
Sheets("Sheet2").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
ElseIf ((Cells(x, 8).Interior.Color = vbGreen)) Then
Cells(x, 1).Resize(1, 33).Copy
Sheets("Sheet3").Select
NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(NextRow, 1).Select
ActiveSheet.Paste
Sheets("Sheet1").Select
End If
Next x
End With
End Sub
我在下一行的开头收到下标超出范围错误。在这段代码中,我试图使用单元格的突出显示颜色来分隔列表。在 sheet1 中,如果列有红色或黄色,它应该复制到 Sheet2。如果它有绿色则复制到 sheet3。
【问题讨论】: