隐藏空单元格

我目前正在处理隐藏空单元的代码,但问题是我希望它开始隐藏在某个范围(“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 

程序不断从一开始就隐藏单元格,我如何设置它,使它从我想要的范围中删除。 请帮忙。

检查下面的解决scheme。 如果您需要更改受影响的区域,只需更改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 
 Sheets("Sheet1").Range("A9:A12").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True 

如果没有find单元格, 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 

你甚至可以缩短你的代码,如下所示:

 For i = 9 To 12 Cells(i, 1).EntireRow.Hidden = IsEmpty(Cells(i, 1).Value) Next i 

因此, Hidden属性的结果将取决于Cells(i,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