Всем добрый вечер! Помогите понять почему происходит такое с моей формой? Я начал делать небольшую форму авторизации: в зависимости от пользователя, что бы были разные права на использование листов. И вот дошёл до момента когда вызываю форму руками - всё работает, а как только вставляю вызов при событии Private Sub Workbook_Open() PokazatFormu End Sub - файл сразу показывает сбой и при повторном открытии сама форма оголяется. Что я не так делаю? В чём загвоздка?
Юрий М написал: про Ваш файл - что-то в нём не так.
Этот файл не понравился Вашему компьютеру. У Юры тоже- не хочет событие запускать. А вот мой ноут толерантный Допускаю, что файл с внутренней поломкой, поэтому лучше перенести все в новый файл. Модули VBA можно переносить без проблем, а вот с листов лучше брать только данные, без форматирования и прочих украшательств, иначе можно перетянуть проблему в новый файл.
Попутно: цвет на Вашей форме ядовитый. Не стоит сильно увлекаться разукрашками.
А вот у меня (у меня! и только у меня!) когда не идет xlsm и ошибки лезут, помогает пересохранить в xlsb.... Почему и в каких точно условиях - не скажу, я не настоящий сварщик...
Проблема в самом файле. Можно увидеть в обозревателе объектов, что у него идет сбой в проекте VBA. Есть два объктка ЭтаКнига(ЭтаКнига1 и ЭтаКнига2) + много модулей листов, не привязанных к реальным листам(можно увидеть по тому, что у них нет имени в скобках). Если форму экспортировать - файлы вроде в норме, без паталогий. Поэтому перенос данных(не листов целиком!) в новую книгу с последующим экспортом/импортом формы и модулей должен вылечить проблему. Т.е. создаете новую книгу. Переименовываете стандартным способом листы так, как проблемной книге. Далее, из проблемной книги по очереди для каждого листа: выделяете все ячейки с данными -копируете. Переходите на такой же лист новой книги -Специальная вставка. Сначала ширины столбцов, затем формулы, потом форматы.
Дмитрий, а я не обратил внимания на дерево! А ведь известный случай.
Ха! Еще подумал - и как это я не заметил "поломанное дерево"? А не видел, потому что на моем Excel-2010 никаких фантомных модулей нет! Все 7 листов в наличии. Видимо, поэтому и форма у меня нормально запустилась. Почему? Кто объяснит? Как еще можно видеть невидимое?
Шутки - хорошо, но ведь и на 2010 видел подобное. Сам когда-то не переименовал процедуру и открыл файл с двумя одинаково названными макросами - получил похожий сбой. Видел фантомы и в присланных книгах. Возможно, кто-нибудь сможет поделиться информацией по этому вопросу.
Проверил в Excel 2007 (ru). Проблем не замечено. В Excel 2016 (en) проблемы из-за русских букв во внутренних именах (свойство CodeName) объектов Excel. Конструкции вида
Код
Лист6.Activate
потенциально опасны в и некоторых конфигурациях могут вызывать проблемы. Лучше сразу после создания книги менять внутренние (кодовые) имена листов и имя ЭтаКнига на подходящие латинские.
sokol92 написал: потенциально опасны в и некоторых конфигурациях могут вызывать проблемы.
Хм, вроде такого замечено небыло. Более того, не понятна первопричина сего, если такое может быть. Может просто элементарные опечатки сходных символов, Лист с- рус и eng например?
Здравствуйте, БМВ! Для начала, файл из #1 просто не будет компилироваться, если кодовая страница Windows по умолчанию не поддерживает кириллицу (например, Win-1252) как раз ввиду конструкций, указанных в #20.
Так ведь разговор не о способе лечения )) Ведь у автора проблема именно с этим файлом, а в "чистом" такого не наблюдается. Выяснить бы причину столь странного поведения: у одних всё срабатывает, а у других не хочет.
Юрий М написал: Выяснить бы причину столь странного поведения: у одних всё срабатывает, а у других не хочет.
На мой вгляд, очередной "битый" файл, т.е. файл с нарушенной структурой. Исследовать такие файлы хлопотно: нужно понять, какая именно часть не в порядке и какая последовательность действий привела к катастрофе. На второй вопрос я точно ответить не смогу. По первому вопросу гипотеза: виноват стандартный модуль WBSecurity. Если его удалить и затем вставить новый модуль с тем же именем и текстом, то жизнь налаживается. Но могу и ошибаться.
Кроме этого, очень странно написана обработка события закрытия книги - я бы советовал автору темы обрабатывать вместо этого событие сохранения книги.
Переделал файл по-новому, по совету Дмитрий Щербаков и sokol92. Но проблема осталась. Стоит мне только в событии Открытие книги разкомментировать PokazatFormu как сразу же после запуска форма ломается и файл становится не рабочим. И что делать???? Ума не приложу.