Показывать строку на основе значения ячейки — Excel VBA

#vba #excel #rows #show

#vba #excel #строки #показать

Вопрос:

Я использую следующий код, чтобы скрыть строки на основе значения ячейки:

 Sub HideN()

Dim RowCnt As Long, uRng As Range

BeginRow = 8
EndRow = 232
ChkCol = 6

    For RowCnt = BeginRow To EndRow
        If Cells(RowCnt, ChkCol).Value = 0 Then
         If uRng Is Nothing Then
          Set uRng = Cells(RowCnt, ChkCol)
         Else
          Set uRng = Union(uRng, Cells(RowCnt, ChkCol))
         End If

        End If
    Next RowCnt

 If Not uRng Is Nothing Then uRng.EntireRow.Hidden = True

End Sub
  

Что мне нужно изменить, если я также хочу отобразить строки, в которых значение ячейки равно 1?

Заранее спасибо!

MD

Ответ №1:

Это скроет все, что равно 0, и покажет все остальные.

 Sub HideN()

Dim RowCnt As Long
Dim BeginRowamp;, EndRowamp;, ChkColamp;

BeginRow = 8
EndRow = 232
ChkCol = 6

    For RowCnt = BeginRow To EndRow
        Rows(RowCnt).Hidden = Cells(RowCnt, ChkCol).Value = 0
    Next RowCnt



End Sub
  

Конечно, вы можете сделать то же самое с фильтром.

Комментарии:

1. Отличный пример установки логического значения в результат логического выражения — 1

Ответ №2:

Вы могли бы просто добавить дополнительный If оператор, нет?:

 Sub HideN()

Dim RowCnt As Long, uRng As Range

BeginRow = 8
EndRow = 232
chkcol = 6

For RowCnt = BeginRow To EndRow
    If Cells(RowCnt, chkcol).Value = 0 Then
        If uRng Is Nothing Then
            Set uRng = Cells(RowCnt, chkcol)
        Else
            Set uRng = Union(uRng, Cells(RowCnt, chkcol))
        End If
    End If
    If Cells(RowCnt, chkcol).Value = 1 Then ' This is the new line to add
        Rows(RowCnt).EntireRow.Hidden = False
    End If
Next RowCnt

If Not uRng Is Nothing Then uRng.EntireRow.Hidden = True

End Sub