Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2012, 21:03   #1
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию запустить макрос при опеределенном значении ячейки

есть одна конкретная ячейка.
ее значение во времени может меняться.
хотелось бы, чтобы при наличии определенных значений в ней автоматически запускался макрос и кое-что считал.
если такое можно сделать, скажите, пожалуйста, как
peq вне форума Ответить с цитированием
Старый 03.08.2012, 21:54   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
Dim oldValue
Private Sub Worksheet_Change(ByVal Target As Range)
 If oldValue <> Cells(3, 3) Then
   oldValue = Cells(3, 3)
   If oldValue < 10 Then call <макрос>
  End If
End Sub
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 03.08.2012, 22:00   #3
peq
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 230
По умолчанию

понял, спасибо большое
peq вне форума Ответить с цитированием
Старый 04.08.2012, 08:30   #4
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Step_UA,
есть пара нюансов:

1. Worksheet_Change срабатывает только при изменении ячеек вручную. Если значение меняется в результате пересчета формул, это событие не срабатывает, надо использовать Worksheet_Calculate.

2. Весьма полезно отключать обработку событий на время работы макроса, чтобы избежать зацикливания процедуры Worksheet_Change или Worksheet_Calculate:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
 If oldValue <> Cells(3, 3) Then
   oldValue = Cells(3, 3)
   If oldValue < 10 Then
      application.enableevents=false
      call <макрос>
      application.enableevents=true
   End If
  End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 04.08.2012, 13:22   #5
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Казанский,
1. ТС не указал от чего меняется значение в ячейке (ввод данных, формула ...) поэтому предположил наиболее вероятное, т.к.
Worksheet_Change срабатывает также при изменении ячеек макросом, а пересчет формул в большинстве случаев возникает при изменении данных вручную и обрабатывается до вызова процедуры Worksheet_Change.
2. Для предотвращения зацикливания обычно ввожу логическую переменную и проверяю ее значение в начале процедуры. Запрет/разрешение на обработку событий лучше "предоставить" макросу.
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос изменения цвета шрифта ячейки, при наличии определенной буквы Alex_91 Microsoft Office Excel 8 24.05.2012 21:44
Как запустить макрос из ячейки? Maxx Microsoft Office Excel 8 15.04.2009 15:47
Как запустить макрос при изменении другой книги Excel? Град Microsoft Office Excel 12 10.06.2008 10:01
как заставить работать макрос при определенном значении ячейки? Град Microsoft Office Excel 5 30.05.2008 16:06
ВЫЧИСЛИТЬ j^j ПРИ ЗНАЧЕНИИ j ОТ 2 ДО N pirozho4ek Помощь студентам 6 19.05.2007 10:49