авто запуск макроса по условию
ячейка "А1" на листе 2 (это все для отброса лишней информации) получает данные с листа 1 из ячейки "А7", та в свою очередь получает данные (текущее время) из http://time100.ru/online.html с периодом 1 мин.
для сбора и записи меняющихся данных из "А1" я записал макрос "mm1". При его запуске - данные из "А1" копируются и записываются как значения и формат в "В1", после этого добавляется новая колонка. В ячейке "А2" записывается формула (=ЕСЛИ(A1=C1;"да";"нет"). Все работает отлично и достигаются поставленные задачи, т.е. идет запись данных из "А1", в ячейке "А2" сравниваются значения текущие (ячейка "А1") и последние записанные (ячейка "С1").
Вот код макроса:
Sub mm1()
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Columns("A:A").EntireColumn.Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C=R[-1]C[2],""äà"",""íåò"")"
ActiveCell.Offset(-1, 0).Range("A1").Select
End Sub
Но это все надо проделывать Автоматически, т.е. как бы запускать макрос "mm1".
Нашел в интернете макрос для запуска по условию в ячейке "А2", записал его в "лист 2" , где он по идее и должен выполнятся. Но именно этот макрос почему то запускает какой-то бесконечный цикл и файл уходит на перезапуск.
вот макрос:
Private Sub Worksheet_Calculate()
If [A2] = "нет" Then Call mm1
End Sub
помогите ПОЖАЛУЙСТА.
чтобы все заработало, надо было в первый макрос вставить:
Будьте внимательны! Если Ваш макрос будет работать с ячейками таблицы, то в начале процедуры необходимо отключить обработчик событий командой Application.EnableEvents = False. По окончании процедуры, естественно, включить его Application.EnableEvents = True.
отдельное спасибо автору выше написанного.
итого -
первый макрос приобрел вид:
Sub mm1()
Application.EnableEvents = False
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell.Columns("A:A").EntireColumn.Select
Application.CutCopyMode = False
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveCell.Offset(1, -1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C=R[-1]C[2],""да"",""нет"")"
ActiveCell.Offset(-1, 0).Range("A1").Select
Application.EnableEvents = True
End Sub
а второй - остался прежним.