Скрываю ненужные ячейки при выборе определенного значения в выпадающем списке. Но стокнулся с тем, что 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
Будет проще, если вы напишете простыми русскими буквами какой результат вы хотите получить от работы макроса. Типа - если в ячейках таких-то вставили или это, или вот это - то должно произойти вот то. А если нет - то вот се. Как-то так, попроще.
Есть таблица с выпадающими списками и далее даты, далее все остальное. Если выбрать в выпадающим списки данные где отсутствуют потребность с заполнении дат, нужно даты скрыть, чтобы пользователю они не мешали. К примеру в ячейки А5 выбираю "Сезонный", а столбики с датами раскрываются. У меня уже все работает. Но во код ужасный и не могу захватиться ячейки с А1 до А50. Функция IF не позволяет. В примере все просто и понятно ☺
В примере как раз не до конца понятно. Вы проверяете наличие П1 или П3 в некоем диапазоне. И если хоть одно из них встречается - надо прятать столбцы В:С. Так можно сформулировать задачу, она будет правильно сформулирована? Или вам надо что-то другое, судя по тому, что в макросе x = "IN-OUT", y = "Сезонный", а в примере П1, П2, П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", а по коду у вас - наоборот, если они НЕ встречаются - надо прятать. А если встречаются - показывать.