Подскажите пожалуйста, как автоматически скрыть строки. Т.е. при вводе в соответствующую ячейку к примеру числа 20 на листе в таблице остаются 20 нужных строк, а остальные автоматически скрываются, далее при вводе например 30 появляются еще 10 строк (теперь их 30), потом при вводе скажем числа 10 остаются всего десять строк ну и т.д.
Подскажите пожалуйста, как автоматически скрыть строки. Т.е. при вводе в соответствующую ячейку к примеру числа 20 на листе в таблице остаются 20 нужных строк, а остальные автоматически скрываются, далее при вводе например 30 появляются еще 10 строк (теперь их 30), потом при вводе скажем числа 10 остаются всего десять строк ну и т.д.Ден
Sub Скрыть() Dim x&, xx& x = Sheets("Лист1").Cells(4, 2).Value + 5 xx = Sheets("Лист1").Cells(5, 2).Value + 205 If Sheets("Лист1").Cells(4, 2).Value = 0 Or Sheets("Лист1").Cells(5, 2).Value = 0 Then Exit Sub Sheets("Лист2").Cells.EntireRow.Hidden = False Sheets("Лист2").Rows(x & ":204").EntireRow.Hidden = True Sheets("Лист2").Rows(xx & ":404").EntireRow.Hidden = True End Sub
[/vba]
[vba]
Code
Sub Скрыть() Dim x&, xx& x = Sheets("Лист1").Cells(4, 2).Value + 5 xx = Sheets("Лист1").Cells(5, 2).Value + 205 If Sheets("Лист1").Cells(4, 2).Value = 0 Or Sheets("Лист1").Cells(5, 2).Value = 0 Then Exit Sub Sheets("Лист2").Cells.EntireRow.Hidden = False Sheets("Лист2").Rows(x & ":204").EntireRow.Hidden = True Sheets("Лист2").Rows(xx & ":404").EntireRow.Hidden = True End Sub
Sub Скрыть() Dim lRow1 As Long With Worksheets("Лист1") .Range(Cells(4, 1), Cells(404, 1)).EntireRow.Hidden = False lRow = .Range("B4").Value + 5 .Range(Cells(lRow, 1), Cells(204, 1)).EntireRow.Hidden = True lRow = .Range("B5").Value + 205 .Range(Cells(lRow, 1), Cells(404, 1)).EntireRow.Hidden = True End With End Sub
[/vba]
Вариант в файле.
Или с одной переменной: [vba]
Code
Sub Скрыть() Dim lRow1 As Long With Worksheets("Лист1") .Range(Cells(4, 1), Cells(404, 1)).EntireRow.Hidden = False lRow = .Range("B4").Value + 5 .Range(Cells(lRow, 1), Cells(204, 1)).EntireRow.Hidden = True lRow = .Range("B5").Value + 205 .Range(Cells(lRow, 1), Cells(404, 1)).EntireRow.Hidden = True End With End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B4" Or Target.Address(0, 0) = "B5" Then If Target > 200 Then MsgBox "Перебор" Exit Sub End If With Лист2 .Rows("5:405").EntireRow.Hidden = False .Rows((5 + [B4]) & ":204").EntireRow.Hidden = True .Rows((205 + [B5]) & ":404").EntireRow.Hidden = True End With End If End Sub
[/vba]
Ну и до кучи [vba]
Code
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address(0, 0) = "B4" Or Target.Address(0, 0) = "B5" Then If Target > 200 Then MsgBox "Перебор" Exit Sub End If With Лист2 .Rows("5:405").EntireRow.Hidden = False .Rows((5 + [B4]) & ":204").EntireRow.Hidden = True .Rows((205 + [B5]) & ":404").EntireRow.Hidden = True End With End If End Sub