尝试了解如何在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
我想循环这个,直到所有空行都被格式化。
答案 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。
单击列和行标题之间的角落选择整个工作表
打开条件格式菜单
点击"新规则"
点击"使用公式确定要格式化的细胞"
在框中输入以下公式:=COUNTBLANK(1:1)=16384
选择所需的格式
这样做的原因是因为Excel 计算每行中的空白单元格数。根据所使用的Excel版本,我们已经知道连续有 16384 列。因此,如果=countblank()
返回的值不是您的数字,那么它知道至少有一个单元格中包含数据。