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

Вход

Регистрация

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

 

= Мир MS Excel/Отслеживание изменений значения ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Отслеживание изменений значения ячейки
shtirlic39 Дата: Среда, 25.10.2017, 15:52 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день!
Хочу скрыть строки в зависимости от значения в ячейке. Нужный макрос нашел, он работает. НО. Приходится нажимать на кнопку, а хочется, чтобы макрос сам отлавливал изменения в ячейках и скрывал/показывал строку в зависимости от значения в ячейке.
Я попробовал сам написать, но не получилось(.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub

    Dim cell As Range
    Application.ScreenUpdating = False

    For Each cell In ActiveSheet.UsedRange.Columns(9).Cells
        If cell.Value = "Скрыть" Then cell.EntireRow.Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
Файл прикрепляю.
К сообщению приложен файл: 111.xlsm (15.7 Kb)


Сообщение отредактировал shtirlic39 - Среда, 25.10.2017, 15:53
 
Ответить
СообщениеДобрый день!
Хочу скрыть строки в зависимости от значения в ячейке. Нужный макрос нашел, он работает. НО. Приходится нажимать на кнопку, а хочется, чтобы макрос сам отлавливал изменения в ячейках и скрывал/показывал строку в зависимости от значения в ячейке.
Я попробовал сам написать, но не получилось(.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("I:I")) Is Nothing Then Exit Sub

    Dim cell As Range
    Application.ScreenUpdating = False

    For Each cell In ActiveSheet.UsedRange.Columns(9).Cells
        If cell.Value = "Скрыть" Then cell.EntireRow.Hidden = True
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
Файл прикрепляю.

Автор - shtirlic39
Дата добавления - 25.10.2017 в 15:52
_Boroda_ Дата: Среда, 25.10.2017, 15:56 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Положите макрос не в модуль книги, а в модуль листа
(Правой мышой на ярлык листа - Исходный код - откроется окошко - вот туда макрос и нужно писать

Ну и сам макрос немного иначе нужно
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each cell In ActiveSheet.UsedRange.Columns(9).Cells
        cell.EntireRow.Hidden = cell.Value = "Скрыть"
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 111-1-1.xlsm (16.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПоложите макрос не в модуль книги, а в модуль листа
(Правой мышой на ярлык листа - Исходный код - откроется окошко - вот туда макрос и нужно писать

Ну и сам макрос немного иначе нужно
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Columns(2)) Is Nothing Then Exit Sub
    Dim cell As Range
    Application.ScreenUpdating = False
    For Each cell In ActiveSheet.UsedRange.Columns(9).Cells
        cell.EntireRow.Hidden = cell.Value = "Скрыть"
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 25.10.2017 в 15:56
shtirlic39 Дата: Среда, 25.10.2017, 16:05 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо! Все работает!
Получается макрос отслеживает изменение только во втором столбце?
А можно такой макрос сделать для всей книги, а не для одного листа?
 
Ответить
СообщениеСпасибо! Все работает!
Получается макрос отслеживает изменение только во втором столбце?
А можно такой макрос сделать для всей книги, а не для одного листа?

Автор - shtirlic39
Дата добавления - 25.10.2017 в 16:05
_Boroda_ Дата: Среда, 25.10.2017, 16:12 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
макрос отслеживает изменение только во втором столбце?

Конечно. Ведь именно там Вы вручную меняете значения
А можно такой макрос сделать для всей книги

Конечно. Вот теперь нужно класть в модуль книги
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    With Sh
        If Intersect(Target, .Columns(2)) Is Nothing Then Exit Sub
        Dim cell As Range
        Application.ScreenUpdating = False
        For Each cell In Sh.UsedRange.Columns(9).Cells
            cell.EntireRow.Hidden = cell.Value = "Скрыть"
        Next
        Application.ScreenUpdating = True
    End With
End Sub
[/vba]
К сообщению приложен файл: 111-1-2.xlsm (20.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
макрос отслеживает изменение только во втором столбце?

Конечно. Ведь именно там Вы вручную меняете значения
А можно такой макрос сделать для всей книги

Конечно. Вот теперь нужно класть в модуль книги
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    With Sh
        If Intersect(Target, .Columns(2)) Is Nothing Then Exit Sub
        Dim cell As Range
        Application.ScreenUpdating = False
        For Each cell In Sh.UsedRange.Columns(9).Cells
            cell.EntireRow.Hidden = cell.Value = "Скрыть"
        Next
        Application.ScreenUpdating = True
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 25.10.2017 в 16:12
  • Страница 1 из 1
  • 1
Поиск:

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