Добрый день. Облазил форум, но не нашел решения моей проблемы. Есть таблица (см. вложения). В ней можно выбирать вид оборудования и от этого будет определяться комплект деталей и его стоимость. Как сделать так, чтобы те строки, в которых ячейка "кол-во" равна "0" автоматически скрывались, а, если выбрать другой вид оборудования, то отображались скрытые, а другие скрывались? Сделать это необходимо в автоматическом режиме, без использования кнопки.
Есть код:
[vba]
Код
Private Sub Worksheet_Calculate() Sub test() Dim i& For i = 1 To 100 If Range("A" & i).Value = "" Then Rows(i).EntireRow.Hidden = True Else: Rows(i).EntireRow.Hidden = False ' End If Next End Sub
[/vba]
Но он работает с тормозами и глюками.
Добрый день. Облазил форум, но не нашел решения моей проблемы. Есть таблица (см. вложения). В ней можно выбирать вид оборудования и от этого будет определяться комплект деталей и его стоимость. Как сделать так, чтобы те строки, в которых ячейка "кол-во" равна "0" автоматически скрывались, а, если выбрать другой вид оборудования, то отображались скрытые, а другие скрывались? Сделать это необходимо в автоматическом режиме, без использования кнопки.
Есть код:
[vba]
Код
Private Sub Worksheet_Calculate() Sub test() Dim i& For i = 1 To 100 If Range("A" & i).Value = "" Then Rows(i).EntireRow.Hidden = True Else: Rows(i).EntireRow.Hidden = False ' End If Next End Sub
Private Sub Worksheet_Change(ByVal Target As Range) Dim hRange As Range Dim i& Dim x Rows("1:" & Rows.Count).Hidden = False x = Range("C4:C" & Cells(Rows.Count, 3).End(xlUp).Row).Value For i = 1 To UBound(x) If x(i, 1) = 0 Then If hRange Is Nothing Then Set hRange = Cells(i + 3, 1) Else Set hRange = Union(Cells(i + 3, 1), hRange) End If End If Next If Not hRange Is Nothing Then hRange.EntireRow.Hidden = True End If Set hRange = Nothing End Sub
[/vba]
В модуль листа [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim hRange As Range Dim i& Dim x Rows("1:" & Rows.Count).Hidden = False x = Range("C4:C" & Cells(Rows.Count, 3).End(xlUp).Row).Value For i = 1 To UBound(x) If x(i, 1) = 0 Then If hRange Is Nothing Then Set hRange = Cells(i + 3, 1) Else Set hRange = Union(Cells(i + 3, 1), hRange) End If End If Next If Not hRange Is Nothing Then hRange.EntireRow.Hidden = True End If Set hRange = Nothing End Sub