Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

авто запуск макроса по условию

83K
19 июля 2012 года
dax3
4 / / 19.07.2012
помогите разобраться:
ячейка "А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



помогите ПОЖАЛУЙСТА.
83K
19 июля 2012 года
dax3
4 / / 19.07.2012
все, разобрался.

чтобы все заработало, надо было в первый макрос вставить:

Будьте внимательны! Если Ваш макрос будет работать с ячейками таблицы, то в начале процедуры необходимо отключить обработчик событий командой 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

а второй - остался прежним.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог