0

我有以下代码:

Case "END-BOX"
    EndBox = ActiveCell.Row
    Selection.Offset(-1, 2).Select
    Selection.ClearContents
    Rows(2).Insert Shift:=xlDown
    TotalCols = ActiveSheet.UsedRange.Columns.Count
    Col = 4

    Cells(EndBox, Col).Select

    For i = EndBox To 1 Step -1
        If Cells(i, Col).Value <> "" Then
            n = n + 1
        Else
            Cells(i, Col).Value = n
            Cells(i, Col).Interior.ColorIndex = 4
            n = 0
        End If
    Next

    Range(EndBox).Select
    Selection.Offset(1, -2).Select

它导致绿色单元格出现在结束框行以及新框行上。我只希望新框线着色。有什么方法可以修改代码以使其做到这一点?

是我的工作簿。

4

2 回答 2

1

我建议使用 Autofilter 而不是 Looping。您正在检查 Col B 中的“新框”,因此请使用此代码。

Dim lRow As Long
Dim rng As Range

With Sheets("Spare")
    '~~> Remove any filters
    .AutoFilterMode = False

    lRow = .Range("B" & .Rows.Count).End(xlUp).Row

    With .Range("B1:B" & lRow) 'Filter, offset(to exclude headers)
        .AutoFilter Field:=1, Criteria1:="NEW-BOX"
        Set rng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        rng.Interior.ColorIndex = 4
    End With

    '~~> Remove any filters
    ActiveSheet.AutoFilterMode = False
End With
于 2013-02-20T15:32:31.390 回答
0

去掉上面写着的那一行:

Cells(i, Col).Interior.ColorIndex = 4

这是设置单元格颜色的线。

要仅对 B 列中带有“new-box”的行着色,请将该行更改为:

If Cells(i, Col).Offset(0, -2).Value = "new-box" Then Cells(i, Col).Interior.ColorIndex = 4

注意:这不会撤消之前应用的颜色格式。

于 2013-02-20T15:17:12.487 回答