lemme首先显示一段代码
For Each cell In selRng.Cells
If InStr(cell.value, "_cb") Then
cell.EntireRow.Interior.Color = RGB(0, 200, 0)
End If
If InStr(cell.value, "_mou") Then
cell.EntireRow.Interior.Color = RGB(0, 200, 0)
End If
If InStr(cell.value, "_ebp") Then
cell.EntireRow.Interior.Color = RGB(0, 200, 0)
End If
Next cell
此代码的全部作用是检查单元格中字符串的末尾是否包含这三个子字符串中的任何一个,然后将白色行着色为绿色。
问题来自以下事实:该行的颜色将超出使用范围,我尝试删除最后使用的多余行,但无济于事,总是在最后一行保留一行绿线溢出的工作表。
它看起来像这样:
我知道必须有一种解决方法,但是我似乎无法找到代码到底有什么问题。
答案 0 :(得分:2)
要将其限制为使用范围(并不总是准确的),可以使用:
Intersect(cell.EntireRow, cell.worksheet.usedrange).Interior.Color = RGB(0, 200, 0)
此外,您实际上并不需要三个If语句,只需一个,因为每次的颜色相同:
If InStr(cell.value, "_cb") Or InStr(cell.value, "_mou") or InStr(cell.value, "_ebp") Then
答案 1 :(得分:0)
如果在所有情况下最后一列始终为“ CB”,则可以使用:
Range("A" & cell.Row & ":CB" & cell.Row).Interior.Color = RGB(0, 200, 0)
但是,如果最后一列不是固定的,则可以使用:
If InStr(cell.Value, "_cb") Or InStr(cell.Value, "_mou") Or InStr(cell.Value, "_ebp") Then
LastColumn = Worksheets("Data").Cells(cell.Row, Worksheets("Data").Columns.Count).End(xlToLeft).Column
Range(Cells(cell.Row, 1), Cells(cell.Row, LastColumn)).Interior.Color = RGB(0, 200, 0)
End If