Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Скрыть строки по условию в ячеке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Скрыть строки по условию в ячеке
anisimovaleksandr32 Дата: Суббота, 22.06.2024, 13:09 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 4 ±
Замечаний: 20% ±

Добрый день, многоуважаемые ГУРУ экселя!!!
Помогите пжл реализовать задачу скрытия строк по условию в ячейке 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]
СПАСИБО ОГРОМНОЕ заранее
К сообщению приложен файл: dk_forum.xlsm (110.0 Kb)


Сообщение отредактировал anisimovaleksandr32 - Суббота, 22.06.2024, 13:45
 
Ответить
СообщениеДобрый день, многоуважаемые ГУРУ экселя!!!
Помогите пжл реализовать задачу скрытия строк по условию в ячейке 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]
СПАСИБО ОГРОМНОЕ заранее

Автор - anisimovaleksandr32
Дата добавления - 22.06.2024 в 13:09
Pelena Дата: Суббота, 22.06.2024, 16:53 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4554 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Вместо
[vba]
Код
Rows("30,34,49").EntireRow
[/vba]
напишите
[vba]
Код
Range("30:30,34:34,49:49").EntireRow
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Вместо
[vba]
Код
Rows("30,34,49").EntireRow
[/vba]
напишите
[vba]
Код
Range("30:30,34:34,49:49").EntireRow
[/vba]

Автор - Pelena
Дата добавления - 22.06.2024 в 16:53
anisimovaleksandr32 Дата: Суббота, 22.06.2024, 17:16 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 4 ±
Замечаний: 20% ±

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]
К сообщению приложен файл: 8384053.xlsm (112.1 Kb)
 
Ответить
Сообщение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]

Автор - anisimovaleksandr32
Дата добавления - 22.06.2024 в 17:16
Pelena Дата: Суббота, 22.06.2024, 17:30 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4554 ±
Замечаний: ±

Excel 365 & Mac Excel
При каком значении не срабатывает?
По Вашему алгоритму для Бетонной смеси и Растворной смеси строки должны отображаться, для всех других - скрываться


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПри каком значении не срабатывает?
По Вашему алгоритму для Бетонной смеси и Растворной смеси строки должны отображаться, для всех других - скрываться

Автор - Pelena
Дата добавления - 22.06.2024 в 17:30
Hugo Дата: Суббота, 22.06.2024, 17:33 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Работает в файле.
Только там логика немного странная - если в ячейке НЕ "Растворная смесь" то строки скрываются, если "Растворная смесь" то строки показываются.
Ну и если "Бетонная смесь" то тоже строки показываются.
Нужно с логикой поработать.


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 22.06.2024, 17:37
 
Ответить
СообщениеРаботает в файле.
Только там логика немного странная - если в ячейке НЕ "Растворная смесь" то строки скрываются, если "Растворная смесь" то строки показываются.
Ну и если "Бетонная смесь" то тоже строки показываются.
Нужно с логикой поработать.

Автор - Hugo
Дата добавления - 22.06.2024 в 17:33
anisimovaleksandr32 Дата: Суббота, 22.06.2024, 17:54 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 4 ±
Замечаний: 20% ±

Pelena, а понял Вас Спасибо!!!
Hugo, Все верно сам код рабочий лишь логика "условие" неправильная расставленная - сейчас изменил тут:
[vba]
Код
If Target = "Бетонная смесь" Then
[/vba]
На "растворная смесь" и начался процесс срабатывания макроса
Правда %) если в ячейке указано "бетонная смесь" строки скрылись :D а если "растворная смесь" то отображаются
Сейчас буду выстраивать логику - думать
 
Ответить
СообщениеPelena, а понял Вас Спасибо!!!
Hugo, Все верно сам код рабочий лишь логика "условие" неправильная расставленная - сейчас изменил тут:
[vba]
Код
If Target = "Бетонная смесь" Then
[/vba]
На "растворная смесь" и начался процесс срабатывания макроса
Правда %) если в ячейке указано "бетонная смесь" строки скрылись :D а если "растворная смесь" то отображаются
Сейчас буду выстраивать логику - думать

Автор - anisimovaleksandr32
Дата добавления - 22.06.2024 в 17:54
Hugo Дата: Суббота, 22.06.2024, 17:57 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Поставьте в ячейке выпадающий список (чтоб другое не вводили) и вроде как работает файл что выше


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 22.06.2024, 18:03
 
Ответить
СообщениеПоставьте в ячейке выпадающий список (чтоб другое не вводили) и вроде как работает файл что выше

Автор - Hugo
Дата добавления - 22.06.2024 в 17:57
anisimovaleksandr32 Дата: Суббота, 22.06.2024, 18:10 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 4 ±
Замечаний: 20% ±

Hugo, неее я завязал эту ячейку с формой UserForm - чтоб сотрудники работали только с формой и кнопками ВНЕСТИ ЗАПИСЬ; СОХРАНИТЬ ФАЙЛ.
Все условия и выпадающие списки все в форме уже есть - теперь лишь ЛОГИКУ :D сгенерировать по этому коду скрыть строки по условию ячейки AZ2 (она потом тоже скроется с глаз долой). Да и формулы тоже на листе спрячу в vba (((( а то как всегда бывает УПС а у нас не работает ((((
 
Ответить
СообщениеHugo, неее я завязал эту ячейку с формой UserForm - чтоб сотрудники работали только с формой и кнопками ВНЕСТИ ЗАПИСЬ; СОХРАНИТЬ ФАЙЛ.
Все условия и выпадающие списки все в форме уже есть - теперь лишь ЛОГИКУ :D сгенерировать по этому коду скрыть строки по условию ячейки AZ2 (она потом тоже скроется с глаз долой). Да и формулы тоже на листе спрячу в vba (((( а то как всегда бывает УПС а у нас не работает ((((

Автор - anisimovaleksandr32
Дата добавления - 22.06.2024 в 18:10
anisimovaleksandr32 Дата: Суббота, 22.06.2024, 18:20 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 86
Репутация: 4 ±
Замечаний: 20% ±

Hugo, Спасибо за "подзатыльник" :D
Pelena, Спасибо огромное за наставления!!!
ВСЕ у меня получилось hands
[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]


Сообщение отредактировал anisimovaleksandr32 - Суббота, 22.06.2024, 18:21
 
Ответить
СообщениеHugo, Спасибо за "подзатыльник" :D
Pelena, Спасибо огромное за наставления!!!
ВСЕ у меня получилось hands
[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]

Автор - anisimovaleksandr32
Дата добавления - 22.06.2024 в 18:20
Hugo Дата: Суббота, 22.06.2024, 18:40 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3690
Репутация: 790 ±
Замечаний: 0% ±

365
Можно сократить:
[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
[/vba]


webmoney: E265281470651 Z422237915069
USDT TRC20: TN8XeEF17o5KPBD9pNwYzNyruycuAc2mVD


Сообщение отредактировал Hugo - Суббота, 22.06.2024, 18:42
 
Ответить
СообщениеМожно сократить:
[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
[/vba]

Автор - Hugo
Дата добавления - 22.06.2024 в 18:40
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!