Страницы: 1
RSS
Как прервать Application.OnTime
 
Добрый день

Прошу помощи  у знатоков, можно ли осуществить такую задумку:

 Есть файл по событию открытия которого запускается нехитрый макрос, последняя строка в котором
                 Application.OnTime FF, "offf"
 т.е. файл должен закрыться через 1 мин после открытия .

ВОПРОС: можно ли как-то остановить закрытие если на "Лист1" в ячейку "А1" будут введены любые данные с клавиатуры?

Заранее всем благодарен.
 
Код
Sub offf ()
If  [A1] <> "" Then Exit Sub
ThisWorkbook.Close
End Sub
Изменено: Dima S - 18.03.2015 16:00:23
 
по событию изменения ячейки запускаете макрос, отменяющий Ontime:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> Me.Range("A1").Address Then Exit Sub
    Application.OnTime FF, "offf", , False ' отмена закрытия файла
End Sub
код вставляете в модуль листа Лист1
 
Это ведь всё есть в хелпе.
Код
Example
This example runs my_Procedure 15 seconds from now.

Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
      
This example runs my_Procedure at 5 P.M.

Application.OnTime TimeValue("17:00:00"), "my_Procedure"
      
This example cancels the OnTime setting from the previous example.

Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
    Procedure:="my_Procedure", Schedule:=False


Изменено: Hugo - 18.03.2015 16:04:41
 
Спасибо, сейчас попробую.
Цитата
Это ведь всё есть в хелпе.
А насчет этого - или недочитал, или недопонял, спасибо за разъяснение.
 
Игорь, попробовал вставить в Private Sub Worksheet_Change(ByVal Target As Range) строку
Код
 Application.OnTime FF, "offf", , False ' отмена закрытия файла
ругается   Error `1004`
              Method `OnTime` of object`_Application` failed

Подскажите, пожалуйста, что не так?

фух..сам разобрался:
       надо было описать переменную FF на уровне модуля )))
Изменено: Artmasterpro - 18.03.2015 17:22:32
 
Привет, всё оказалось сложнее, чем казалось, убил пару дней, чтобы всё отточить.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.

Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.

Ну что же, приступим!

Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.

Решение:

В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.

Теперь конкретно. Для начала приведу код, а потом всё объясню.

Макрос в Excel, Word - описание.

Изменено: nilidan - 30.04.2019 20:37:18 (один файл добавился два раза, удалил лишний)
Страницы: 1
Наверх