分类：电脑/网络-软件
问题：Excel中怎样一次性删除所有标注为红色的行我的一个Excel中 
我的一个中大概有1400条数据，以前为了区分将其中的某些行标注成了红色，现在想要把红色行全部删除，我从网上搜索再改了改写了两段代码，但是实现起来都有点问题，请各位高手帮我看看，有没有好的实现方法请指教，先谢谢了！1）Sub Test1()    Dim arrRow() As String    Dim num As Long    Dim i%, j%    num = 0    ReDim arrRow(num)    With ActiveSheet        '存储所有红色的行号      我的一个中大概有1400条数据，以前为了区分将其中的某些行标注成了红色，现在想要把红色行全部删除，我从网上搜索再改了改写了两段代码，但是实现起来都有点问题，请各位高手帮我看看，有没有好的实现方法请指教，先谢谢了！1）Sub Test1()    Dim arrRow() As String    Dim num As Long    Dim i%, j%    num = 0    ReDim arrRow(num)    With ActiveSheet        '存储所有红色的行号        For i = 3 To .[c65536].End(xlUp).Row            If Rows(i).Font.ColorIndex = 3 Then                arrRow(num) = i                num = num + 1                ReDim Preserve arrRow(num)            End If        Next i        strTemp = ""        '选中所有数组中对应的行        For j = 0 To UBound(arrRow) - 1            If strTemp <> "" Then                strTemp = strTemp + "," + arrRow(j) + ":" + arrRow(j)            Else                strTemp = strTemp + arrRow(j) + ":" + arrRow(j)            End If        Next j        Range(strTemp).Select        '删除选中的行（标注为红色的行）        Selection.Delete     End WithEnd Sub这段代码有一个问题，应为Excel中红色的行数比较多，我试验是只要选中的行数大于30行，就会提示出错：方法'range'作用于对象'_Global'时失败（我不知道是不是我的代码哪里写错了，请指教）。2）Sub Test2()Dim i%, n%    With ActiveSheet        For i = 3 To .[c65536].End(xlUp).Row            If Rows(i).Font.ColorIndex = 3 Then                Rows(i).Delete            End If        Next i    End WithEnd Sub这段代码因为行数是依次+1查看的，标注为红色的行如果是连续的，上面一行被删除后，下面一行就会漏删。我想应该有更好的方法可以一次实现，只是我刚开始学习vba编程，只能想到这两种方法，让大家笑话了！
回答：Sub Test2() 
Dim i%, n% 
With ActiveSheet 
For i = .[c65536]. To 3 End(xlUp).Row 
If Rows(i).Font.ColorIndex = 3 Then 
Rows(i).Delete 
End If 
Next i 
End With 
End Sub 
从后向前删。其实不用65535，你可以用ActiveSheet.UsedRange.Rows.Count得到实际的行数