Страницы: 1
RSS
При обновлении значения в ячейке запуск макроса
 
Всем привет! Наверное, мой вопрос очень просто решается, но я уже пару часов ниче не могу сделать.
Есть выпадающий список в ячейке на листе номер 1. В зависимости от выбранного значения в списке, макросом скрывается один из столбцов на этой вкладке.
На листе номер 2, значение ячейки связано со значением в ячейке с выпадающим списком на листе 1.
Несмотря на то, что визуально значение на листе 2 меняется при выборе значений в списке на листе 1, чтобы макрос на листе 2 заработал и столбец на листе 2 скрылся, нужно обновить значение связвнной ячейки  на листе 2 вручную (щелкнуть курсором по строке формул и нажать enter). Мне нужно сделать, чтобы столбец скрывался на вкладке 2, после того как выбрано значение в выпадающем списке на листе 1. Можно ли просто в макросе для листа 2 прописать чтобы он ссылался на значение ячейки на листе 1? Типо вот так.. Помогите, пожалуйста. у меня Excel 2007
Код
If на листе 1 Target.Column = 3 And Target.Row = 14 And Target.Value = "AAC" Then

       
Изменено: temniy - 15.04.2018 12:23:10
 
Цитата
temniy написал: Мне нужно сделать, чтобы столбец скрывался на вкладке 2, после того как выбрано значение в выпадающем списке на листе 1
'Повесьте' макрос на событие активации Лист2
Код
Private Sub Worksheet_Activate()
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
'Повесьте' макрос на событие активации Лист2
Спасибо за быстрый ответ! Я попытался, но я реально оч плохо в этом разбираюсь. Выдает ошибку "run-time 424. object required".  Можно попросить Вас скинуть полностью текст макроса для листа 2? Заранее спасибо!
 
temniy, а зачем отслеживать изменения на втором листе? Отслеживайте на первом и обрабатывайте второй лист.
P.S. Зачем в макросе (первый лист) дважды указываете одну и ту же целевую ячейку?
 
В модуль второго листа
Код
Private Sub Worksheet_Activate()
On Error Resume Next
Application.ScreenUpdating = False
    Select Case Worksheets("Sheet1").Range("C10")
        Case "AAC"
            Me.Columns.EntireColumn.Hidden = False
            Me.Columns("E").EntireColumn.Hidden = True
        Case "Hollow/Thermal"
            Me.Columns.EntireColumn.Hidden = False
            Me.Columns("D").EntireColumn.Hidden = True
        Case Else
            Me.Columns.EntireColumn.Hidden = False
    End Select
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("C10")) Is Nothing Then
        Columns("D:E").Hidden = False
        Select Case Target
            Case Is = "AAC"
                Columns("E").Hidden = True
                'Здесь нужные действия со вторым листом
            Case Is = "Hollow/Thermal"
                Columns("D").Hidden = True
                'Здесь нужные действия со вторым листом
        End Select
    End If
End Sub



 
@Sanja , @Юрий М
Спасибо большое обоим, все работает!
Ток теперь появился один маленький нюанс... У меня есть еще одна вкладка, которая как бы вспомагательная с данными и по идее должна будет быть скрыта или запаролена. На листе 2 строятся диаграммы, данные для которых берутся с листа 3. На листе 3 такой же макрос написан, как и на листе 2, скрывающий столбцы в зависимости от выбранного в выпадающем списке на первом листе. Но для того, чтобы данные на диаграмме на листе 2 обновились, надо обящательно кликнуть на лист 3, там срабатывает макрос, и тогда диаграммы обновляются.  
Можно ли как-то обойтись без "клика" по листу 3?

Я могу перенести данные с третей вкладки на вторую и спрятать внизу, тогда все норм работает, но подразумевается вкладки "tool" и "commercial" будут видны всем, и мне не хотелось бы, что бы эти данные были видны. В идеале лист 3 должен быть спрятан, или запаролен хотя бы
Изменено: temniy - 15.04.2018 14:51:43
 
Может кто-то помочь с этим  :qstn:  
 
А смысл помогать, если Вы не слушаете? Зачем отслеживать на всвех трёх листах, если изменения происходят на одном?
Страницы: 1
Наверх