Новости:

Новая редакция правил форума: 2.4. Если вопрос или ответ содержится во вложенном файле, все-равно кратко описывайте в сообщении вопрос или суть решения. Это необходимо, чтобы тему можно было найти через поиск.

Главное меню

Скрытие/отображение строк и листов в зависимости от содержания ячейки

Автор alexstrel, 18.08.2012, 13:31

« назад - далее »

alexstrel

В одной определенной ячейке есть число.
Нужно чтобы если туда введено "1", то отображались строки 1-5. Если "2", то 1-10, если "3", то 1-15, если "4" то 1-20, если "5", то 1-25. При этом если введено другое число, либо любой символ, либо ячейка пустая, то отображались бы все строки. И если например введено "3", а потом стало "5", то отображались бы строки 1-25. Если потом ввести "2", то строки 11-25 скрылись бы и остались только 1-10. Т.е. чтобы происходило не только скрытие, но и отображение нужных строк. Строки начиная с 26 не должны быть задействованы в этом.

И тоже самое с листами книги.
Если в определенной ячейке есть число и оно например "1", то отображался бы "Лист 1", если "2", то "Лист 1" и "Лист 2". Если "3", то "Лист 1", "Лист 2", "Лист 3". Если 4, то "Лист 1", "Лист 2", "Лист 3", "Лист 4". Если "5", то "Лист 1", "Лист 2", "Лист 3", "Лист 4", "Лист 5". И также как в предыдущем случае, если стоит цифра "3", то должны быть отображены листы 1-3, а 4-5 скрыты, внезависимости то того, какие листы были отображены и скрыты раньше.

Подскажите, как это можно реализовать?

nilem

Попробуйте менять значение ячейки Н26 на листе, в модуле которого есть такой код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address(0, 0) <> "H26" Then Exit Sub
Dim x: On Error Resume Next: Err.Clear
Rows("1:25").Hidden = True
Rows("1:" & Target.Value * 5).Hidden = False
If Err Then Rows("1:25").Hidden = False
For Each x In Array("Лист1", "Лист2", "Лист3", "Лист4", "Лист5")
   Sheets(x).Visible = CLng(Right(x, 1)) <= Target.Value
Next
End Sub