2013-02-20 77 views
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 

它导致出现在终端箱线绿色细胞,以及新的箱线。我只想让新盒子的线条变成彩色。有什么办法可以修改代码,以便它可以执行此操作吗?

Here是我的工作手册。

回答

1

摆脱这行的:

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

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

要在B列有“新盒子”仅彩色行,更改行:

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

注:这不会撤销颜色格式之前应用。

+1

对不起,我应该澄清。我确实希望代码为单元格着色,但只有具有“New Box”的行才会着色,而且我不知道如何开始修改它。 – SCGB 2013-02-20 15:20:37

+0

看到我的答案修订。 – 2013-02-20 15:27:12

+0

谢谢,这工作完美。 – SCGB 2013-02-20 15:33:34

1

我会推荐使用Autofilter而不是循环。您正在Col B中检查“New Box”,请使用此代码。

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