Как я могу скрыть строки Excel, если сумма содержимого = ноль и пропустить пропуски? - PullRequest
1 голос
/ 23 декабря 2011

Ниже у меня есть два кода: один скрывает, а другой скрывает строки на основе суммы содержащихся в них значений, равной нулю.Тем не менее, этот код также скрывает пустые строки, которые я не хочу, так как они являются разделителями между разделами.Буду признателен за любой совет, и если будут рекомендации по улучшению существующего кода, я также буду признателен за это.

Sub HideRows()

Dim R As Long
Dim Rng As Range

    If Selection.Rows.Count > 1 Then
        Set Rng = Selection
    Else
        Set Rng = ActiveSheet.UsedRange
    End If

    For R = 1 To Rng.Rows.Count
        If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then
        Rng.Rows(R).Hidden = True
        End If
    Next R

End Sub
Sub UnHideRows()

Dim R As Long
Dim Rng As Range

    If Selection.Rows.Count > 1 Then
        Set Rng = Selection
    Else
        Set Rng = ActiveSheet.UsedRange
    End If

    For R = 1 To Rng.Rows.Count
        If Application.Sum(Range(Rng(R, 3), Rng(R, Rng.Columns.Count))) = 0# Then
        Rng.Rows(R).Hidden = False
        End If
    Next R

End Sub

1 Ответ

4 голосов
/ 23 декабря 2011

замените цикл FOR в каждом методе следующим ....

myRange = Range(Rng(R, 3), Rng(R, Rng.Columns.Count))
For R = 1 To Rng.Rows.Count
  If Application.CountBlank(myRange) <> myRange.Cells.Count Then
    If Application.Sum(myRange) = 0# Then
      Rng.Rows(R).Hidden = True
    End If
Next R

Сначала он проверяет, все ли ячейки в этом диапазоне строк пусты, и, по существу, пропускает дальнейшую обработку, если имеет значение true.

...