Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Автоматический запуск макроса в зависимости от значения в ячейке.
 
С вашей помощью и с помощью своей интуиции. Ваши коды + плюс интуиция - вот что вышло:  
 
Public bInsert As Boolean  
Private Sub Worksheet_Calculate()  
Application.EnableEvents = False  
If [A1] = 1 Then
If bInsert = False Then Put_record: bInsert = True  
Else  
bInsert = False  
End If  
Application.EnableEvents = True  
End Sub  
 
 
Спасибо всем вам, господа программисты, и моей интуиции.
Автоматический запуск макроса в зависимости от значения в ячейке.
 
{quote}{login=Юрий М}{date=05.08.2009 01:51}{thema=}{post}При вставке строк событие Calculate Или Change происходит? Вот макрос и будет срабатывать. Нужно отключить событие.{/post}{/quote}  
 
Вот макрос вставки:  
Sub Put_record()  
 
   Rows("7:7").Select  
   Selection.Insert Shift:=xlDown  
   Range("A8").Select  
   Selection.AutoFill Destination:=Range("A7:A8"), Type:=xlFillDefault  
   Range("A7:A8").Select  
   Range("A8").Select  
   Selection.Copy  
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _  
       :=False, Transpose:=False  
   Application.CutCopyMode = False  
   Range("A4").Select  
End Sub  
 
А вот формула в ячейке A7 =A$4+A$5  
При этом A1 - ссылается на другие ячейки
Автоматический запуск макроса в зависимости от значения в ячейке.
 
{quote}{login=The_Prist}{date=05.08.2009 01:53}{thema=}{post}Значит надо завести глобальную  переменную и на неё ориентироваться.  
Public bInsert as Boolean  
Private Sub Worksheet_Calculate()  
If [A1] = 1 Then
if bInsert = false then Put_record:bInsert = true  
Else  
bInsert = false  
end if  
End Sub{/post}{/quote}  
 
 
А этот код привел к очередному зацикливанию (код находится в модуле Листа1)
Автоматический запуск макроса в зависимости от значения в ячейке.
 
{quote}{login=Лузер™}{date=05.08.2009 01:51}{thema=}{post}Отключайте события в событиях:  
Private Sub Worksheet_Calculate()  
Application.EnableEvents = False  
код  
Application.EnableEvents = True  
End Sub{/post}{/quote}  
 
T.е. так:  
 
Private Sub Worksheet_Calculate()  
Application.EnableEvents = False  
If [A1] = 1 Then
Put_record  
End If  
Application.EnableEvents = True  
End Sub  
 
Этот код приводит к следующему дефекту: при нажатии клавиши "Enter", на любом месте, на любой ячейке Листа1, если ячейка A1 все еще остается = 1, запускается макрос Put_record. Можно ли устранить этот дефект.
Автоматический запуск макроса в зависимости от значения в ячейке.
 
Макрос автоматически вставляет строки не один раз, как требуется, а бесконечное число раз - пока не выдаст ошибку (
Автоматический запуск макроса в зависимости от значения в ячейке.
 
Если A1 является формулой, т.е. ссылается на другие ячейки, то все эти выше указанные коды - не работаю. Что делать?
Автоматический запуск макроса в зависимости от значения в ячейке.
 
И ваш код работает. Спасибо вам и Юрий М !
Автоматический запуск макроса в зависимости от значения в ячейке.
 
Хорошо, но можно, я попробовал, и так:  
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Not Intersect(Target, Range("A1")) Is Nothing Then  
If Target = 1 Then  
Application.Run "'auto-put-record.xls'!Put_record"  
End If  
End If  
End Sub  
 
Этот код работает без вопросов, но сейчас попробую и ваш. Здесь auto-put-record.xls - имя файла.
Автоматический запуск макроса в зависимости от значения в ячейке.
 
Private Sub Worksheet_Change(ByVal Target As Range)  
If Not Intersect(Target, Range("A1")) Is Nothing Then  
If Target = 1 Then  
MsgBox "Put_record"  
End If  
End If  
End Sub  
 
Но этот код требует дополнительного подтверждения запуска макроса Put_record  
Очень нужно, чтоб Excel без дополнительных вопросов запускал макрос Put_record, как только A1 становится равным 1
Автоматический запуск макроса в зависимости от значения в ячейке.
 
Пусть ячейка A1 принимает только два значения: 1 или 0. Как только значение в этой ячейке принимает 1, тут же должен автоматически запускаться макрос (под именем Put-record; он вставляет строку в таблице). Если ячейка принимает значение 0 (или, допустим, какое-либо иное значение, отличное от 1), то ничего не требуется специально запускать, пока ячейка вновь не станет равной единице. Нужен VBA-код этого макроса, который бы сам мониторил ячейку A1 и запускал бы другой макрос Put-record каждый раз, как только значение ячейки A1 сменится с нуля (или с какой-л. другой цифры или значения) на единицу.
Макрос - Автоматическое сохранение файла через заданный промежуток времени
 
После открытия файла Книга1.xls я его тут же под этим же именем сохранил, но в текстовом формате. Запустил макрос save20. И он работает - сохраняет текст активного листа. Отлично!
Макрос - Автоматическое сохранение файла через заданный промежуток времени
 
{quote}{login=The_Prist}{date=22.07.2009 05:42}{thema=}{post}Если макрос в Module1(Модуль1), то следует заменить Me на thisWorkbook{/post}{/quote}  
 
Работает! Есть!  
СПАСИБО!!!
Макрос - Автоматическое сохранение файла через заданный промежуток времени
 
Выдает ошибку:  
Compile error:  
Invalid use of Me keyword.
Макрос - Автоматическое сохранение файла через заданный промежуток времени
 
это я первоначальный автор вопроса  
я уже поэкспериментировал тут с - вместо save20 поставить уже записанный Макрос1.  
Да, действительно срабатывает. Так оно и есть - макрос запустил Макрос1 с открытием файла автоматически. А вот со вторым кодом я пока разбираюсь. Там нужно в окне проекты редактора ВБА просто вставить новый модуль. И в нем уже писать второй код? Сейчас попробую.
Макрос - Автоматическое сохранение файла через заданный промежуток времени
 
{quote}{login=Mario}{date=22.07.2009 05:28}{thema=}{post}А давайте будем подписываться, а то не понятно, это мне предлагают функцию переименовать или просто еще помошники есть{/post}{/quote}
Страницы: 1
Наверх