Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel行着色超出了使用范围_Excel_Vba - Fatal编程技术网

Excel行着色超出了使用范围

Excel行着色超出了使用范围,excel,vba,Excel,Vba,让我从显示一段代码开始 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

让我从显示一段代码开始

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
这段代码所做的只是检查单元格中字符串的结尾是否包含这三个子字符串中的任何一个子字符串,然后将while行涂成绿色

这个问题来自这样一个事实,即该行的颜色将远远超出使用的范围,我尝试删除最后使用的额外行,但没有效果,始终有一行保留在工作表的最后,绿色线从中溢出

看起来是这样的:


我知道必须有一种方法来解决这个问题,但我似乎无法找到代码的确切错误。

要将其限制在usedrange(并不总是准确的),您可以使用:

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

要将其限制为usedrange(并不总是准确),可以使用:

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

如果在所有情况下,最后一列始终为“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
但是,如果最后一列未修复,则可以使用:

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

如果在所有情况下,最后一列始终为“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
但是,如果最后一列未修复,则可以使用:

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

您没有显示代码的所有相关部分。我们需要查看您在哪里设置
selRng
您没有显示代码的所有相关部分。我们需要看看你在哪里设置了
selRng
,效果很好,谢谢!修改了我的代码,使所有的东西都处于一个If状态。这非常有效,谢谢!修改了我的代码,使所有内容都处于一个If条件中。