Добрый день, многоуважаемые ГУРУ экселя!!! Помогите пжл реализовать задачу скрытия строк по условию в ячейке AZ2: Если в ячейке AZ2 указано "растворная смесь" то на листе скрывается строки: 30; 34; 49 Если в ячейке AZ2 указано "бетонная смесь" то все строки отображаются Нашел подобную тему с аналогичным по сути задачей My WebPage там в
Цитата
Дата: Четверг, 03.10.2013, 20:29 | Сообщение № 4
имеется предложение. Решил им воспользоваться но терплю неудачу (((( [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Бетонная смесь" Then Rows("30,34,49").EntireRow.Hidden = False Else Rows("30,34,49").EntireRow.Hidden = True End If If Target = "Растворная смесь" Then Rows("30,34,49").EntireRow.Hidden = False
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba] СПАСИБО ОГРОМНОЕ заранее
Добрый день, многоуважаемые ГУРУ экселя!!! Помогите пжл реализовать задачу скрытия строк по условию в ячейке AZ2: Если в ячейке AZ2 указано "растворная смесь" то на листе скрывается строки: 30; 34; 49 Если в ячейке AZ2 указано "бетонная смесь" то все строки отображаются Нашел подобную тему с аналогичным по сути задачей My WebPage там в
Цитата
Дата: Четверг, 03.10.2013, 20:29 | Сообщение № 4
имеется предложение. Решил им воспользоваться но терплю неудачу (((( [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Бетонная смесь" Then Rows("30,34,49").EntireRow.Hidden = False Else Rows("30,34,49").EntireRow.Hidden = True End If If Target = "Растворная смесь" Then Rows("30,34,49").EntireRow.Hidden = False
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
Pelena, Спасибо огромное за ответ - но почему то не срабатывает [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Бетонная смесь" Then Range("30:30,34:34,49:49").EntireRow.Hidden = False Else Range("30:30,34:34,49:49").EntireRow.Hidden = True End If If Target = "Растворная смесь" Then Range("30:30,34:34,49:49").EntireRow.Hidden = False
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba]
Pelena, Спасибо огромное за ответ - но почему то не срабатывает [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Бетонная смесь" Then Range("30:30,34:34,49:49").EntireRow.Hidden = False Else Range("30:30,34:34,49:49").EntireRow.Hidden = True End If If Target = "Растворная смесь" Then Range("30:30,34:34,49:49").EntireRow.Hidden = False
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
При каком значении не срабатывает? По Вашему алгоритму для Бетонной смеси и Растворной смеси строки должны отображаться, для всех других - скрываться
При каком значении не срабатывает? По Вашему алгоритму для Бетонной смеси и Растворной смеси строки должны отображаться, для всех других - скрыватьсяPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Работает в файле. Только там логика немного странная - если в ячейке НЕ "Растворная смесь" то строки скрываются, если "Растворная смесь" то строки показываются. Ну и если "Бетонная смесь" то тоже строки показываются. Нужно с логикой поработать.
Работает в файле. Только там логика немного странная - если в ячейке НЕ "Растворная смесь" то строки скрываются, если "Растворная смесь" то строки показываются. Ну и если "Бетонная смесь" то тоже строки показываются. Нужно с логикой поработать.Hugo
Pelena, а понял Вас Спасибо!!! Hugo, Все верно сам код рабочий лишь логика "условие" неправильная расставленная - сейчас изменил тут: [vba]
Код
If Target = "Бетонная смесь" Then
[/vba] На "растворная смесь" и начался процесс срабатывания макроса Правда если в ячейке указано "бетонная смесь" строки скрылись а если "растворная смесь" то отображаются Сейчас буду выстраивать логику - думать
Pelena, а понял Вас Спасибо!!! Hugo, Все верно сам код рабочий лишь логика "условие" неправильная расставленная - сейчас изменил тут: [vba]
Код
If Target = "Бетонная смесь" Then
[/vba] На "растворная смесь" и начался процесс срабатывания макроса Правда если в ячейке указано "бетонная смесь" строки скрылись а если "растворная смесь" то отображаются Сейчас буду выстраивать логику - думать anisimovaleksandr32
Hugo, неее я завязал эту ячейку с формой UserForm - чтоб сотрудники работали только с формой и кнопками ВНЕСТИ ЗАПИСЬ; СОХРАНИТЬ ФАЙЛ. Все условия и выпадающие списки все в форме уже есть - теперь лишь ЛОГИКУ сгенерировать по этому коду скрыть строки по условию ячейки AZ2 (она потом тоже скроется с глаз долой). Да и формулы тоже на листе спрячу в vba (((( а то как всегда бывает УПС а у нас не работает ((((
Hugo, неее я завязал эту ячейку с формой UserForm - чтоб сотрудники работали только с формой и кнопками ВНЕСТИ ЗАПИСЬ; СОХРАНИТЬ ФАЙЛ. Все условия и выпадающие списки все в форме уже есть - теперь лишь ЛОГИКУ сгенерировать по этому коду скрыть строки по условию ячейки AZ2 (она потом тоже скроется с глаз долой). Да и формулы тоже на листе спрячу в vba (((( а то как всегда бывает УПС а у нас не работает ((((anisimovaleksandr32
Hugo, Спасибо за "подзатыльник" Pelena, Спасибо огромное за наставления!!! ВСЕ у меня получилось [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Растворная смесь" Then Range("30:31,34:35,49:50").EntireRow.Hidden = True Else Range("30:31,34:35,49:50").EntireRow.Hidden = False End If If Target = "Растворная смесь" Then Range("30:31,34:35,49:50").EntireRow.Hidden = True
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba]
Hugo, Спасибо за "подзатыльник" Pelena, Спасибо огромное за наставления!!! ВСЕ у меня получилось [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False If Target = "Растворная смесь" Then Range("30:31,34:35,49:50").EntireRow.Hidden = True Else Range("30:31,34:35,49:50").EntireRow.Hidden = False End If If Target = "Растворная смесь" Then Range("30:31,34:35,49:50").EntireRow.Hidden = True
Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False Range("30:30,34:34,49:49").EntireRow.Hidden = (Target = "Растворная смесь") Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba]
А по сути процесса ещё можно урезать до: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then _ Range("30:30,34:34,49:49").EntireRow.Hidden = (Target = "Растворная смесь") End Sub
[/vba]
Можно сократить: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then Application.EnableEvents = 0: Application.ScreenUpdating = False Range("30:30,34:34,49:49").EntireRow.Hidden = (Target = "Растворная смесь") Application.EnableEvents = -1: Application.ScreenUpdating = False End If End Sub
[/vba]
А по сути процесса ещё можно урезать до: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Range("AZ2"), Target) Is Nothing Then _ Range("30:30,34:34,49:49").EntireRow.Hidden = (Target = "Растворная смесь") End Sub