Страницы: 1
RSS
Скрытие ячеек при выборе определенных значений из выпадающего списка
 
Скрываю ненужные ячейки при выборе определенного значения в выпадающем списке.
Но стокнулся с тем, что Select case не работает на автозапуск, только if.
Сделал вот такой ужас↓ Помогите упростить и добавить еще ячеек до А50.

Помогите упростить:
Код
Sub Макрос1()
Dim x, y As String
x = "П1"
y = "П3"
If Range("A5").Value = x Or _
Range("A6").Value = x Or _
Range("A7").Value = x Or _
Range("A8").Value = x Or _
Range("A9").Value = x Or _
Range("A10").Value = x Or _
Range("A11").Value = x Or _
Range("A12").Value = x Or _
Range("A13").Value = x Or _
Range("A14").Value = x Or _
Range("A15").Value = x Or _
Range("A16").Value = x Or _
Range("A5").Value = y Or _
Range("A6").Value = y Or _
Range("A7").Value = y Or _
Range("A8").Value = y Or _
Range("A9").Value = y Or _
Range("A10").Value = y Or _
Range("A11").Value = y Or _
Range("A12").Value = y Or _
Range("A13").Value = y Or _
Range("A14").Value = y Or _
Range("A15").Value = y Or _
Range("A16").Value = y Then

Columns("B:C").Hidden = False
Else: Columns("B:C").Hidden = True
End If

End Sub


Запускаю макрос:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range: Set rng = [A5:A50] 
    If Not Intersect(rng, Target) Is Nothing Then Макрос1
End Sub
Изменено: occupiedwork - 27.12.2018 17:38:32
 
Будет проще, если вы напишете простыми русскими буквами какой результат вы хотите получить от работы макроса. Типа - если в ячейках таких-то вставили или это, или вот это - то должно произойти вот то. А если нет - то вот се. Как-то так, попроще.
Кому решение нужно - тот пример и рисует.
 
Есть таблица с выпадающими списками и далее даты, далее все остальное. Если выбрать в выпадающим списки данные где отсутствуют потребность с заполнении дат, нужно даты скрыть, чтобы пользователю они не мешали. К примеру в ячейки А5 выбираю "Сезонный", а столбики с датами раскрываются. У меня уже все работает. Но во код ужасный и не могу захватиться ячейки с А1 до А50. Функция IF не позволяет. В примере все просто и понятно ☺
Изменено: occupiedwork - 27.12.2018 17:29:36
 
В примере как раз не до конца понятно. Вы проверяете наличие П1 или П3 в некоем диапазоне. И если хоть одно из них встречается - надо прятать столбцы В:С.
Так можно сформулировать задачу, она будет правильно сформулирована?
Или вам надо что-то другое, судя по тому, что в макросе x = "IN-OUT", y = "Сезонный", а в примере П1, П2, П3 и как одно с другим связано - хрен пойми.
Кому решение нужно - тот пример и рисует.
 
"Вы проверяете наличие П1 или П3 в некоем диапазоне. И если хоть одно из них встречается - надо прятать столбцы В:С. "

Абсолютно верно!!! Простите, впервые пишу такие запросы.
 
Код
Sub МакросСкрываемСтолбцы()
'' СкрываемСтолбцы Макрос
Dim x as String, y As String
x = "П3"
y = "П1"
'проверяем через метод Find для диапазона - если нашел одно значение или нашел второе в заданном диапазоне
       If Not [a5:a50].Find(x) Is Nothing Or Not [a5:a50].Find(y) Is Nothing Then
              Columns("B:C").Hidden = False 'все прячем не хуже Карлсона
       Else: Columns("B:C").Hidden = True 'а не нашел ничего - смело показываем. (Глупый пИнгвин робко прячет, умный - смело достает).
       End If
End Sub

Но что-то вы путаете - пишете "надо прятать при наличии или П1, или П3", а по коду у вас - наоборот, если они НЕ встречаются - надо прятать. А если встречаются - показывать.
Кому решение нужно - тот пример и рисует.
 
Спасибо огромное! То, что нужно!  :idea:  Простите, что так плохо изложил свою задачу!
Страницы: 1
Наверх