Страницы: 1
RSS
Запустить макрос при отсутствии изменений в ячейке или по значению в ячейке
 

Что нужно вписать и как в тело макроса, что бы он автоматически запускался на страничке, если  в ячейке А1 формула  пишет слово «нет». И что бы, не запускался макрос, если появляется  «Ок».  Макрос должен автоматически запускаться постоянно, до появления в ячейке  «Ок». Причина изменений на страничке – одна переменная в формуле создается, как случайное число.

В приложении страничка Эксель с задачей. Если решится этот маленький вопрос, то построю свою программу.

Спасибо!

 
1530105, зайдите в свой профиль и поменяйте отображаемое имя (логин) - сейчас оно с нарушением наших Правил.
 
сейчас имя (логин) Игорь Дикий. До этого было 1530105.    Сейчас нужно ли менять имя (логин)?
 
Сейчас всё нормально )
 
В модуль листа
Код
Private Sub Worksheet_Calculate()
    If Range("G1") = "нет" Then Call myMacro
End Sub
В общий модуль
Код
Sub myMacro()
    MsgBox "Запущен макрос myMacro"
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Код
Private Sub Worksheet_Calculate()
    If [g1] = "нет" Then MsgBox "нет"
End Sub

годится?
 
Если правильно понял:
Код
Private Sub Worksheet_Calculate()
    If Range("G1") = "нет" Then Call Macro1
End Sub

Sub Macro1()
    MsgBox "Сработало!"
    Application.Volatile
End Sub



 
Цитата
Игорь Дикий написал:
при запуске макроса автоматически меняется случайное число в ячейке С5
Я так понял, что нужно в первом приближении это:
Код
Private Sub Worksheet_Calculate()
  If [G1] = "нет" Then Me.Calculate
End Sub
Получается рекурсивная процедура, новый вызов которой происходит без завершения предыдущего вызова. Если таких вызовов будет несколько тысяч, например формулу в С1 поменять на
Код
=СЛУЧМЕЖДУ(1;1000)
, то может произойти переполнение стека и останов по ошибке или вылет приложения.
Если немного усложнить процедуру, глубина вызова не превысит 2.
Код
Private Sub Worksheet_Calculate()
Static busy As Boolean
  If busy Then Exit Sub
  busy = True
  While [G1] = "нет"
    Me.Calculate
  Wend
  busy = False
End Sub
Изменено: Казанский - 09.12.2017 23:27:47
Страницы: 1
Наверх