#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