Страницы: 1
RSS
[ Закрыто ] ограничить работу макроса только на текущую книгу
 
Имеется книга с большим количеством макросов. Когда пользователь работает с несколькими подобными или иными книгами часть макросов и юзерформ срабатывают в других книгах, хотя они должны работать только в той книге, из которой вызываются. Последний раз у юзера сработал макрос на запораливание листа из моей книги, в книге пользователя, пользователь был в шоке)))

Я всего лишь любитель, поэтому не знаю как классически решается такая проблема. Я использую в коде 2 вещи:
1. вставляю вначале каждого саба if ThisWorkbook.Path <> ActiveWorkbook.Path Then Exit Sub
2. убираю обращение к листам через activesheet (хотя и не везде это сделал, рефакторить весь код займет целый день, пока лень, может это можно проще реализовать?), например: ThisWorkbook.Worksheets("Спецификация для клиента"  ;)  .Unprotect psw_var

Есть ли простой способ защититься от вмешательства макроса и юзерформ данной книги в работу других книг?
Особенно проблема актуальна по какой-то причине именно при открытии книги, в работе косяков уже не встречается. Вообще я заметил, почему-то при открытии книги запускаются макросы, которые в принципе не должны запускаться, например, макрос срабатывающий на активацию какого-либо листа, который при открытии не активен.
Изменено: Oleg - 26.07.2013 10:27:15
 
у разных програм разные цели, некоторые пишутся как раз для того, чтобы везде работали, некоторые только на определенном листе..

тщательнее надо код разрабатывать, продумывая его работу в разных ситуациях
Живи и дай жить..
 
как ограничить код, чтобы он работал только на этом листе?
 
Oleg, исправляйте свое сообщение - цитирование абсолютно ни к чему.
 
Цитата
Юрий М пишет:
Oleg, исправляйте свое сообщение - цитирование абсолютно ни к чему.
Юрий, о каком цитировании речь?
 
Решили поиздеваться? Смешно...
Страницы: 1
Читают тему
Наверх