Страницы: 1
RSS
Менять значение ячейки на 0 через каждые 30 секунд автоматически
 
Есть маленькая проблемка я не могу ни где найти информацию, допустим, открыли файл EXCEL, нажали кнопку макроса который должен автоматически выполняться каждые 30 секунд, Смысл кода, в ячейке А1 я внес данные. И хочу, чтобы через 30 секунд значение, которое я внес, стало значением 0.
 
Метод Application. OnTime
Автовыполнение кода через опред. промежутки времени

Здороваться в названии темы не нужно — это делают первой строкой стартового сообщения))
Описание темы - это про краткое описание, а не подробное, а вот стартовое сообщение норм  ;)
Изменено: Jack Famous - 04.03.2021 10:53:54
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Надеюсь разберетесь
Код
Sub UpdateTime ()
  Dim varNeetCall As Variant
  'Записываем в ячейку текущее время
  Cells(1, 1).Value = Now
  'Записываем в varNeetCall время, когда вызывать макрос _
  в следующий раз (через секунду)
  varNeetCall = TimeSerial(Hour(Now), Minute(Now), Second(Now) + 1)
  'Уведомляем Excel в необходимости вызова макроса
  Application.OnTime varNeetCall, "UpdateTime"
End Sub
Изменено: Евгений Смирнов - 04.03.2021 18:39:38
 
Цитата
Евгений Смирнов написал:
Надеюсь разберетесь
Добрый день.
Я написал вот это, но теперь не могу разобраться как сделать так что бы он обнулял через 20 секунд после изменения ячейки A1
То есть макрос должен запускаться после изменения в ячейке, спасибо за помощь.
Код
Sub Workbook_Open()
Call Vajno
End Sub
 Sub Vajno()
Dim sh As Worksheet
Application.OnTime Now() + TimeSerial(0, 0, 20), "Vajno"
Set sh = ActiveWorkbook.Sheets(1)
If sh.Cells(1, 1) <> oldValue Then
Debug.Print Time
Range("A1").Select
ActiveCell.FormulaR1C1 = "0"
End If
End Sub













[CODE][/CODE]
Изменено: veter9191 - 05.03.2021 07:54:50
 
Возможно так
 
Цитата
Евгений Смирнов написал:
Возможно так
не совсем. нужно каждый раз обнулять предыдущий таймер перед установкой нового иначе например ввели что-то , через 10 секунд другое и через 10 сек обнулится, а не через 20 , так как сработает вызов после предыдущего изменения.
Ну и сам код текущий сам себя циклит. после обнуления срабатывает изменение и все по кругу. хотя судя по теме это и надо но в описании другое.
Изменено: БМВ - 05.03.2021 09:40:51
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
не совсем. нужно каждый раз обнулять предыдущий таймер перед установкой нового иначе например ввели что-то , через 10 секунд другое и через 10 сек обнулится, а не через 20 , так как сработает вызов после предыдущего изменения.Ну и сам код текущий сам себя циклит. после обнуления срабатывает изменение и все по кругу. хотя судя по теме это и надо но в описании другое.
Не совсем так, необходимо чтобы обнуление происходило строго через 20 секунд после изменения данных в ячейке, то есть если я в пределах 20 секунд внесу несколько раз данные, отсчёт до обнуления должен идти от последнего изменения!  
 
Цитата
veter9191 написал:
Не совсем так
так вроде я про это и писал.

Код
Sub Vajno()
Static RTime
On Error Resume Next
If Not IsEmpty(RTime) Then Application.OnTime RTime, ThisWorkbook.Name & "!AAAA", , False
RTime = Now() + TimeSerial(0, 0, 30)
Application.OnTime RTime, ThisWorkbook.Name & "!AAAA"
End Sub
Sub AAAA()
Application.EnableEvents = False
Range("A1") = 0
Application.EnableEvents = True
End Sub
Изменено: БМВ - 06.03.2021 15:30:59
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
так вроде я про это и писал.
То что доктор прописал, спасибо огромное.
Страницы: 1
Наверх