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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2010, 17:39   #1
vanandr91
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 11
По умолчанию Выполнение макроса при определенном значении параметра

Привет всем!
Существует такая задача-в программе Трейс Мод генерируется определенный производственный процесс, в результате в ячейку А1 таблицы Excel с периодичностью раз в секунду поступает числовое значение.Необходимо с помощью Visual Basic реализовать следующее-если значение, к примеру, будет больше 24, то должен выполняться определенный макрос.
Кто-нибудь знает, как это реализовать?
vanandr91 вне форума Ответить с цитированием
Старый 07.11.2010, 17:58   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

В любую ячейку на листе пишем формулу =A1
(чтобы вызвать пересчёт листа после изменения ячейки А1)

Потом правой кнопкой на ярлычке листа, выбираем пункт ИСХОДНЫЙ ТЕКСТ
В открывшееся окно вставляем код:
Код:
Private Sub Worksheet_Calculate()
    If Val([a1]) > 24 Then МойМакрос
End Sub

Sub МойМакрос()
    MsgBox "a1 > 24", vbInformation
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 07.11.2010, 18:13   #3
vanandr91
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 11
По умолчанию

Спасибо большое!!
Всё работает!
vanandr91 вне форума Ответить с цитированием
Старый 07.11.2010, 19:52   #4
vanandr91
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 11
По умолчанию

Такой еще вопрос-а можно ли сделать так, чтобы проверка условия происходила, скажем, раз в 10 секунд?
vanandr91 вне форума Ответить с цитированием
Старый 07.11.2010, 20:00   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Dim LastTime As Date    ' время последней проверки

Private Sub Worksheet_Calculate()    ' запускается при пересчёте листа
    If Val([a1]) > 24 Then
        ' запускаем макрос снова не раньше, чем через 10 секунд
        If DateDiff("s", LastTime, Now) > 10 Then МойМакрос
    End If
End Sub

Sub МойМакрос()
    LastTime = Now    ' запоминаем время последнего запуска
    MsgBox "a1 > 24", vbInformation    ' выводим сообщение
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 07.11.2010, 20:03   #6
vanandr91
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 11
По умолчанию

Еще раз, огромное спасибо!!
vanandr91 вне форума Ответить с цитированием
Старый 13.11.2010, 17:56   #7
vanandr91
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 11
По умолчанию

При вышеуказанном варианте проверки условия получается, что раз в 10 секунд макрос выполняется столько раз, сколько число в ячейке привысило 24.
Можно ли сделать как-нибудь, чтобы раз в 10 секунд проверялось только текущее значение ячейки?

Последний раз редактировалось vanandr91; 13.11.2010 в 18:07.
vanandr91 вне форума Ответить с цитированием
Старый 27.02.2012, 23:10   #8
Nonameoff
Новичок
Джуниор
 
Регистрация: 27.02.2012
Сообщений: 1
По умолчанию Спасибо!!!

EducatedFool!!! Мега огромное Вам спасибо! Как раз то, что надо!!! Долго искал ответ на сайте на вопрос насчет Worksheet_Calculate - вы дали верное направление. Мой макрос заработал так, как надо. Осталось только немного "полирнуть", чтобы макрос делал пересчет определенной ячейки только один раз и вообще блеск будет! Спасибо!!!
Nonameoff вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторное выполнение макроса Jaroslav Microsoft Office Excel 3 26.07.2009 10:12
Как остановить выполнение макроса ? kzld Microsoft Office Excel 2 19.07.2009 13:16
Выполнение макроса при нажатии на Лист KinderX Microsoft Office Excel 7 01.07.2009 17:19
Выполнение макроса во всех листах Bu$ter Microsoft Office Excel 18 14.11.2008 14:34
как заставить работать макрос при определенном значении ячейки? Град Microsoft Office Excel 5 30.05.2008 16:06