Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 20:55:28

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Корректность работы UserForm при скрытом Excel файле
Страниц: [1]   Вниз
Печать
Автор Тема: Корректность работы UserForm при скрытом Excel файле  (Прочитано 2670 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Venger
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 33


Просмотр профиля E-mail
« : 25.07.2019, 14:50:33 »

Подскажите пожалуйста, есть какой то выход из следующей ситуации:
У меня есть таблица ексель, которая при запуске скрывается и активируется рабочая форма, где и происходит основная работа с последовательным переключением между разными формами.
Код: (vb)
Windows("УЧЕТ УЗЛОВ и ДЕТАЛЕЙ.xlsm").Visible = False

Но если переключиться на сторонний файл ексель (параллельно запущенный), а потом обратно на рабочую форму, то форма начинает подтягивать данные из стороннего листа (книги) ексель, ссылаясь на те же ячейки.
От этого помогает только активация рабочей формы (книги)
Код: (vb)
Workbooks("УЧЕТ УЗЛОВ и ДЕТАЛЕЙ.xlsm").Sheets("УЗЛЫ и ДЕТАЛИ").Activate

Но такую активацию нужно прописывать при каждом действии на кнопку, или инициализации формы.

Есть ли какой нибудь код, который на постоянной основе подвяжет рабочую форму и лист ексель (книгу), чтобы я мог параллельно работать в файлах ексель.
« Последнее редактирование: 25.07.2019, 14:52:33 от vikttur » Записан
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 25.07.2019, 14:56:07 »

Не нужно активировать.
Объявить переменную, присвоить ей книгу
Код: (vb)
Dim wBook As Workbook
      Set wBook = ThisWorkbook

 и в дальнейшем обращаться к этой переменной
« Последнее редактирование: 25.07.2019, 15:02:19 от vikttur » Записан
Venger
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 33


Просмотр профиля E-mail
« Ответ #2 : 25.07.2019, 15:24:38 »

проблема в том, что если открыт один сторонний ексель файл и при попытке его закрыть, вылетает сообщение о закрытии и рабочей формы (рабочей книги).
Этот сторонний файл имеет прямую связь с рабочей формой и пытается ее закрыть.
Из за этого и приходится на каждое действие указывать адрес к рабочему файлу.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 25.07.2019, 18:35:38 »

Вообще непонятно. Какой-то сторонний файл пытается закрыть Вашу форму, которая к нему не имеет никакого отношения? Да еще Вы пишете, что запущен он даже не в этом экземпляре(или что значит "параллельно"?). Плохо верится. Либо в коде что-то сами перемудрили, либо офис надо менять.
И Виктор Вам правильно пишет - обращайтесь к диапазонам книг и листов напрямую - не надо ничего активировать. Так надежнее и скорее всего остальные мифические ошибки вроде всяких закрытий пропадут.
Вот для изучения:
Как обратиться к диапазону из VBA
Select и Activate - зачем нужны и нужны ли?

Ну и конкретно в таких случаях очень сильно в решении проблем помогает выкладывание файла со всеми кодами. По моему опыту на 99% ошибка именно в кодах, а не в офисе.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru