使用循环格式化所有空行

时间:2018-01-19 14:35:51

标签: excel vba excel-vba

尝试了解如何在Excel中循环以下VBA宏。我需要找到所有空行并格式化它们(不像其他建议那样删除或隐藏它们),如下面的现有代码所示:

Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
ActiveCell.Offset(, 0).Resize(1, 14).Select
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.249946592608417
    .PatternTintAndShade = 0
End With

我想循环这个,直到所有空行都被格式化。

3 个答案:

答案 0 :(得分:2)

试试这个:

Sub Test()

Dim sht As Worksheet, lastrow As Long

Set sht = ThisWorkbook.Worksheets("Sheet1")
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

For i = 1 To lastrow
    If Application.CountA(Range("A" & i & ":N" & i).EntireRow) = 0 Then
        With Range("A" & i & ":N" & i).Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.249946592608417
            .PatternTintAndShade = 0
        End With
    End If
Next i

End Sub

虽然我同意您的最佳解决方案是使用条件格式:)

答案 1 :(得分:2)

如果稍后可以编辑单元格,并且需要为不再空的行删除格式,那么您的一次性初始格式化不会将其删除。最好使用条件格式设置生成的工作表(假设您正在生成该工作表)。

您可以使用目标FormatCondition的{​​{1}}集合创建FormatConditions个对象来实现这一目标:

Range

如果没有VBA代码生成该工作表,则don't write VBA code for this

答案 2 :(得分:1)

非常有效的非VBA解决方案是使用条件格式化而根本不使用VBA。

  1. 单击列和行标题之间的角落选择整个工作表

  2. 打开条件格式菜单

  3. 点击"新规则"

  4. 点击"使用公式确定要格式化的细胞"

  5. 在框中输入以下公式:=COUNTBLANK(1:1)=16384

  6. 选择所需的格式

  7. 这样做的原因是因为Excel 计算每行中的空白单元格数。根据所使用的Excel版本,我们已经知道连续有 16384 列。因此,如果=countblank()返回的值不是您的数字,那么它知道至少有一个单元格中包含数据。