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

Вход

Регистрация

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

 

= Мир MS Excel/Запуск макроса при изменении знач-я заданной ячейки в книге - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса при изменении знач-я заданной ячейки в книге (Макросы/Sub)
Запуск макроса при изменении знач-я заданной ячейки в книге
Kimezz Дата: Среда, 18.05.2016, 11:58 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
здравствуйте!

столкнулся с задачей: нужен макрос, который запускал бы макрос PIRR_Search при любых изменениях в книге, которые бы привели к тому, что значение в ячейке PNPV1 (это ячейка с присвоенным именем) стало бы отличным от нуля.

пробовал вот такой код:

[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Module1.PIRR_Search
End If
End Sub
[/vba]

код почему-то не срабатывает. предложите, пожалуйста, рабочий вариант или объясните, почему не работает мой (файл во вложении).

спасибо!
К сообщению приложен файл: sample.xlsx (63.0 Kb)


Сообщение отредактировал Kimezz - Среда, 18.05.2016, 12:19
 
Ответить
Сообщениездравствуйте!

столкнулся с задачей: нужен макрос, который запускал бы макрос PIRR_Search при любых изменениях в книге, которые бы привели к тому, что значение в ячейке PNPV1 (это ячейка с присвоенным именем) стало бы отличным от нуля.

пробовал вот такой код:

[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Module1.PIRR_Search
End If
End Sub
[/vba]

код почему-то не срабатывает. предложите, пожалуйста, рабочий вариант или объясните, почему не работает мой (файл во вложении).

спасибо!

Автор - Kimezz
Дата добавления - 18.05.2016 в 11:58
_Boroda_ Дата: Среда, 18.05.2016, 12:12 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А так?
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Calculate
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Module1.PIRR_Search
End If
End Sub
[/vba]
Представьте - Вы что-то где-то поменяли. Затем Вы СРАЗУ пытаетесь проверить свою ячейку. Конечно же, там ничего не изменилось - до нее просто не дошло еще по цепочке формул, Вы раньше к ней сунулись проверять. Поэтому сначала запускаем пересчет формул, а потом идем проверять ячейку.
К сообщению приложен файл: 5148941.xlsm (69.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА так?
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Calculate
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Module1.PIRR_Search
End If
End Sub
[/vba]
Представьте - Вы что-то где-то поменяли. Затем Вы СРАЗУ пытаетесь проверить свою ячейку. Конечно же, там ничего не изменилось - до нее просто не дошло еще по цепочке формул, Вы раньше к ней сунулись проверять. Поэтому сначала запускаем пересчет формул, а потом идем проверять ячейку.

Автор - _Boroda_
Дата добавления - 18.05.2016 в 12:12
Kimezz Дата: Среда, 18.05.2016, 12:19 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
во вложенном файле запустилось! спасибо!
сейчас буду разбираться, что нужно было исправить дополнительно!


Сообщение отредактировал Kimezz - Среда, 18.05.2016, 12:21
 
Ответить
Сообщениево вложенном файле запустилось! спасибо!
сейчас буду разбираться, что нужно было исправить дополнительно!

Автор - Kimezz
Дата добавления - 18.05.2016 в 12:19
_Boroda_ Дата: Среда, 18.05.2016, 12:22 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А у меня реагирует. Вы в моем файле смотрите или в своем? Смотрите в моем.
Поставьте в Е59 единицу.
Кстати, Вы макросы разрешили при открытии файла?

О! пока писал, Вы уже поправили свой пост выше. Тогда добавка

У Вас макрос PIRR_Search находится именно в модуле с названием "Module1"?
Макрос Private Sub Workbook_SheetChange находится именно в модуле КНИГИ?


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


Сообщение отредактировал _Boroda_ - Среда, 18.05.2016, 12:25
 
Ответить
СообщениеА у меня реагирует. Вы в моем файле смотрите или в своем? Смотрите в моем.
Поставьте в Е59 единицу.
Кстати, Вы макросы разрешили при открытии файла?

О! пока писал, Вы уже поправили свой пост выше. Тогда добавка

У Вас макрос PIRR_Search находится именно в модуле с названием "Module1"?
Макрос Private Sub Workbook_SheetChange находится именно в модуле КНИГИ?

Автор - _Boroda_
Дата добавления - 18.05.2016 в 12:22
Kimezz Дата: Среда, 18.05.2016, 12:47 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, да, я все проверил, все по местам. MsgBox успешно запускается, большое спасибо.

Только возник странный побочный эффект после того, как я заменил MsgBox нужным кодом: у меня теперь эксель просто падает после внесения изменений в книгу, приводящих к изменению целевой ячейки (несколько раз пробовал - падает).
при этом сам запускаемый макрос PIRR_Search при обычном запуске работает совершенно нормально.

в приложенном файле теперь есть код PIRR_Search, он довольно простой. с подобной проблемой сталкиваюсь впервые.

может ли это быть связано с тем, что вызываемый макрос PIRR_Search влияет на целевую ячейку, стараясь обратно приравнять её нулю? если да, то как лучше обойти эту нестыковку?

ещё раз спасибо!
К сообщению приложен файл: sample.xlsm (67.2 Kb)


Сообщение отредактировал Kimezz - Среда, 18.05.2016, 12:48
 
Ответить
Сообщение_Boroda_, да, я все проверил, все по местам. MsgBox успешно запускается, большое спасибо.

Только возник странный побочный эффект после того, как я заменил MsgBox нужным кодом: у меня теперь эксель просто падает после внесения изменений в книгу, приводящих к изменению целевой ячейки (несколько раз пробовал - падает).
при этом сам запускаемый макрос PIRR_Search при обычном запуске работает совершенно нормально.

в приложенном файле теперь есть код PIRR_Search, он довольно простой. с подобной проблемой сталкиваюсь впервые.

может ли это быть связано с тем, что вызываемый макрос PIRR_Search влияет на целевую ячейку, стараясь обратно приравнять её нулю? если да, то как лучше обойти эту нестыковку?

ещё раз спасибо!

Автор - Kimezz
Дата добавления - 18.05.2016 в 12:47
_Boroda_ Дата: Среда, 18.05.2016, 13:02 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
может ли это быть связано с тем, что вызываемый макрос PIRR_Search влияет на целевую ячейку

Адназначна!
Для этого есть
[vba]
Код
Application.EnableEvents=0
[/vba]
Только не забудьте потом взад вернуть ее
[vba]
Код
Application.EnableEvents=1
[/vba]

Всего должно вот так получиться
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Calculate
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Application.EnableEvents = 0
Module1.PIRR_Search
Application.EnableEvents = 1
End If
End Sub
[/vba]


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

Адназначна!
Для этого есть
[vba]
Код
Application.EnableEvents=0
[/vba]
Только не забудьте потом взад вернуть ее
[vba]
Код
Application.EnableEvents=1
[/vba]

Всего должно вот так получиться
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.Calculate
If Range("PNPV1").Value <> "" And Math.Abs(Range("PNPV1").Value) > 0.01 Then
Application.EnableEvents = 0
Module1.PIRR_Search
Application.EnableEvents = 1
End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 18.05.2016 в 13:02
Kimezz Дата: Среда, 18.05.2016, 13:34 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, супер! спасибо!
взял на вооружение :)

алгоритм теперь работает, вопросов по теме не осталось :)
 
Ответить
Сообщение_Boroda_, супер! спасибо!
взял на вооружение :)

алгоритм теперь работает, вопросов по теме не осталось :)

Автор - Kimezz
Дата добавления - 18.05.2016 в 13:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запуск макроса при изменении знач-я заданной ячейки в книге (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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