隐藏没有值的行

时间:2016-01-25 06:38:28

标签: excel vba excel-vba

我正在尝试Hiding Rows that do not Have Values VBA

的解决方案

代码(不适合我):

Dim rowRange As Range
    BeginRow = 2 'Start after Master Menu item
    EndRow = 252 'Filter all rows in sheet (about 730)
    ColumnsWithValues = 0 'Counter for number of columns in a row that have a value. If 0, hide the row.
    ColumnStart = 2 'Start where you  have group values
    ColumnEnd = 9 'Maximum number of groups
    RowNumber = 0
    ColumnNumber = 0
For RowNumber = BeginRow To EndRow
    Set rowRange = Range(Cells(RowNumber, ColumnStart), Cells(RowNumber, ColumnEnd)).SpecialCells(xlCellTypeVisible)
    If Application.WorksheetFunction.CountA(rowRange) = 0 Then
        rowRange.EntireRow.Hidden = True
    End If
    'Repeat for all rows
    Next RowNumber
End Sub

我的工作簿

My WOrkbook

给出错误104;没有发现细胞。

我在哪里弄错了?

1 个答案:

答案 0 :(得分:1)

如果找不到匹配的单元格,则

SpecialCells会引发错误 - 您可以使用On Error Resume Next忽略该错误,然后进行测试以查看是否设置了rowRange

    Dim rowRange As Range
    BeginRow = 2 'Start after Master Menu item
    EndRow = 252 'Filter all rows in sheet (about 730)
    ColumnsWithValues = 0 'Counter for number of columns in a row 
                          'that have a value. If 0, hide the row.
    ColumnStart = 2 'Start where you  have group values
    ColumnEnd = 9 'Maximum number of groups
    RowNumber = 0
    ColumnNumber = 0
    For RowNumber = BeginRow To EndRow
        Set rowRange = Nothing
        On Error Resume Next
        Set rowRange = Range(Cells(RowNumber, ColumnStart), _
                      Cells(RowNumber, ColumnEnd)).SpecialCells(xlCellTypeVisible)
        On Error Goto 0

        If Not rowRange Is Nothing Then
            If Application.WorksheetFunction.CountA(rowRange) = 0 Then
                rowRange.EntireRow.Hidden = True
            End If
        End If
        'Repeat for all rows
    Next RowNumber
End Sub