Очистить ячейку каждые 10 секунд при смене листа - PullRequest
0 голосов
/ 18 марта 2020

В следующем коде я пытаюсь сделать ячейку A1 пустой каждые 10 секунд и в то же время, чтобы иметь возможность работать с другими ячейками или даже с любой другой рабочей таблицей без прерывания.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim t As Date

If Target.Address = "$A$1" Then
    t = Now() + TimeSerial(0, 0, 10)
    Do

        If Now() >= t Then
        Application.EnableEvents = False
            Range("A1").ClearContents
            Application.EnableEvents = True
            Exit Do
            End If
        DoEvents
    Loop
End If
End Sub

Код может работать и очищать содержимое ячейки, но иногда я обнаруживал, что он не очищается и не заполняется значением, введенным в другой ячейке. Есть идеи, как это исправить?

1 Ответ

1 голос
/ 18 марта 2020

В модуле рабочего листа:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        'existing call to clear?
        If scheduled > 0 Then Application.OnTime scheduled, "ClearIt", schedule:=False
        scheduled = Now + TimeSerial(0, 0, 5)
        Application.OnTime scheduled, "ClearIt", schedule:=True
    End If
End Sub

В обычном модуле:

Public scheduled

Sub ClearIt()
    Application.EnableEvents = False
    Sheet1.Range("A1").Value = ""
    Application.EnableEvents = True
    scheduled = 0
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...