Отключить события vba excel

Обновлено: 03.07.2024

в стандартном модуле:
[vba]

в стандартном модуле:
[vba]

в стандартном модуле:
[vba]

[/vba] Автор - Саня
Дата добавления - 19.08.2015 в 13:07

В стандартный модуль: [vba]

В стандартный модуль: [vba]

В стандартный модуль: [vba]

[/vba] Автор - KSV
Дата добавления - 19.08.2015 в 13:10 Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум. Друзья, я бы посоветовал вам не исключать возможности того, что некоторые менеджеры всё же работают, и даже через 10 минут. И за внезапное закрытие файла при внесении данных - докладная будет на ТС, с лишением премий и бонусов, как минимум. AndreTM AndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего. AndreTM, вот в том то и дело, что более 5 минут в файле ловить нечего. VIDEO56 некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. KSV некоторые менеджеры всё же работают, и даже через 10 минут

думал об этом, но не стал усложнять себе задачу, раз ТС об этом не написал

на самом деле, до идеала далеко.
Первое, что подумалось – это отсутствие удаления таймера. Т.е., если добросовестный менеджер закроет файл сам, то по истечении 10 минут файл снова откроется, для выполнения процедуры, указанной в таймере, и сразу же закроется. Чтобы этого избежать в модуль книги поместите: [vba]

Dim DateTime As Date

[/vba] Тогда при каждом изменении в файле, старый таймер будет сбрасываться, а новый устанавливаться, и файл не закроется пока в нем работают (что-то меняют). А как только перестанут менять, так через 2 минуты он сам закроется. Автор - KSV
Дата добавления - 19.08.2015 в 18:07

VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание.

VIDEO56, перерыл все форумы, но в итоге пришлось сделать самому, понадобилось по работе.

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание. nilidan

Настраиваем автоматическое закрытие Excel файла при отсутствии активности пользователя в течение определенного времени.
Очень часто в повседневной деятельности нам приходится командой работать с Excel файлом, который находится в общем доступе на сетевом диске. В случае, если файл содержит умные таблицы, то предоставление общего доступа через Review->Share Workbook не представляется возможным из-за ограничений самого Excel. Это порождает проблему блокирования рабочего файла, если один забывчивый сотрудник оставил файл открытым после небольших коррекций и ушёл, например, обедать, а второму сотруднику срочно нужно внести в файл новую информацию. Примеров Вы сами можете вспомнить огромное количество.
Ну что же, приступим!
Задача: Необходимо обеспечить автоматическое сохранение и закрытие файла после бездействия пользователя. При этом пользователь может вносить коррекции в файл, а потом бездействовать, либо просто открыть файл и ничего не делать. Под действием мы понимаем изменение любого диапазона ячеек (удаление значений, ввод новых данных и т.д.) на конкретном листе книги.
Решение:
В целом, чтобы выполнить все условия задачи необходимо будет использовать метод .OnTime. Он запускает таймер на выполнение процедуры закрытия файла. При этом нужно будет прерывать действие запущенного таймера при внесении новых изменений, и запускать его заново.
Теперь конкретно. Для начала приведу код, а потом всё объясню.
Приложенный Excel - макра, Word - описание. Автор - nilidan
Дата добавления - 28.04.2019 в 21:54

Я ищу лучший способ отключить события ActiveX от запуска в книге Excel (хотя это применимо ко всем приложениям Office с объектами ActiveX).

Надеюсь, что-то похожее на Application.EnableEvents = false , хотя это не работает с ActiveX.

В приведенном ниже примере тривиально использовать глобальное логическое значение, но у меня есть много обработчиков событий для моих объектов ActiveX, и было бы намного проще для того, что я мог бы повсеместно применять для временного отключения событий ActiveX. Я действительно не хочу добавлять вспомогательный оператор if/exit для каждого из этих методов.

Чтобы продемонстрировать эту проблему, создайте поле со списком ActiveX на листе и добавьте следующее в этот модуль.

спросил(а) 2021-01-07T15:02:49+03:00 10 месяцев, 2 недели назад

Почему бы не отключить их? Таким образом, вам не нужно беспокоиться о своих индивидуальных кодах.

До/После ScreenShots:

enter image description here

ПОСЛЕДНИЕ ОТ КОММЕНТАРИЙ:

Также получается, что это разбивает жесткий ядро ​​на объекты, которые сгруппированы вместе, но я могу разгруппировать объекты (они больше не находятся в "Sheet1.OLEobjects", я думаю). Мне все еще не нравится это, поскольку он полагается на этот факт, и будут моменты, когда я хочу группировать объекты.. - enderland 17 мин назад


Чтобы отключить элементы управления ActiveX в группе, вам не нужно разгруппировать их. Используйте этот код. Следующий код отключит Comboboxes в группе.

ответил(а) 2021-01-07T15:02:49+03:00 10 месяцев, 2 недели назад

Я знаю, что это действительно старо. Но любой, кто ищет это (сначала попал в google), может потребовать простой ответ:

Допустим, у вас есть Private Sub ActiveXControl_Change(), который вызывается во время Application.EnableEvents = False, и вы хотите, чтобы он пропустил это просто:

ответил(а) 2021-01-07T15:02:49+03:00 10 месяцев, 2 недели назад

В моей книге у меня есть набор из 20 (Activex) флажков. Они по сути фильтруют вкл/выкл 20 категорий продукта, которые должны быть включены в отчет. Существует процедура, которая запускается каждый раз, когда один из этих флажков изменяется, просто путем вызова маршрутизации из подпрограммы CheckBox_Click.

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

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

Мое решение - введите код TRUE/FALSE в какую-либо ячейку на скрытом листе, где-то он в стороне и не будет вмешиваться.

Читайте также: