隐藏空单元格

时间:2017-07-07 10:55:22

标签: excel vba excel-vba

我正在研究隐藏空单元格的代码,但问题是我希望它开始隐藏在某个范围内(“A9:A12”)而不是在工作表的开头。 这是我的计划:

Sub EmptyRow()
'Dim s As String
po = Range("A9:A12").Count
Range("A8").Activate

For i = 1 To po
 s = i & ":" & i
 If IsEmpty(Cells(i, 1).Value) Then
     Rows(s).Select
     Selection.EntireRow.Hidden = True
End If
Next

End Sub

程序从头开始一直隐藏单元格,如何设置它以便从我想要的范围中删除它。请帮忙。

4 个答案:

答案 0 :(得分:4)

您甚至可以将代码缩短为:

.JPEG

因此,For i = 9 To 12 Cells(i, 1).EntireRow.Hidden = IsEmpty(Cells(i, 1).Value) Next i 属性的结果取决于Hidden是否为空。它更容易理解和维护。

答案 1 :(得分:3)

检查以下解决方案。如果您需要更改受影响的区域,只需更改targetRange

的值
Sub EmptyRow()
Dim targetRange as Range, po as Long, i as Long
Set targetRange = Range("A9:A12")
po = targetRange.Count

With targetRange
    For i = 1 To po
        If IsEmpty(.Cells(i, 1).Value) Then
        .Rows(i).EntireRow.Hidden = True
        End If
    Next
End With

End Sub

答案 2 :(得分:3)

SpecialCells
如果找不到单元格,

If [CountBlank(Sheet1!A9:A12)] Then _ [Sheet1!A9:A12].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True 会导致运行时错误,但可以检查:

On Error Resume Next
[Sheet1!A9:A12].SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

或忽略:

{{1}}

答案 3 :(得分:1)

您可以摆脱select

之类的内容
Sub EmptyRow()
    For i = 9 To 12
        If IsEmpty(Cells(i, 1).Value) Then
            Cells(i, 1).EntireRow.Hidden = True
        End If
    Next i
End Sub