![]() |
|
Модераторы: Akina |
![]()
|
|
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
Здравствуйте!
Постараюсь описать картину наиболее полно. Плановый отдел нашего предприятия предоставляет отчетность в головное предприятие в экселевских формах. Формы спускаются из Москвы и структуры форм постоянно (зачем - то) меняются. Формы связанные, т.е. на основании цифр одних форм формируются другие. Моя задача в этих формах создавать макросы, которые : - очищают значения; - прописывают формулы; - переносят данные с условием; Соотв - но формы меняются раз в три месяца и приходится переписывать все макросы заново. Формы с готовыми макросами рассылаются в подразделения. Моя задача уйти от механической работы по переписыванию макросов.... Как абстрагироваться от конкретных номеров ячеек? Связь с подразделениям только эл. почтой. |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
М-да...
Проблема... Есть по-крайней мере два решения. 1-е. "В ЛОБ" К каждой форме добавляется "служебный" лист. Его даже можно защитить паролем от случайных изменений юзверями. На этом листе располагаются в табличной его части +------------+-------------------------------------------------+--------------------------------+ | Реквизит | Обозначение реквизита в программе| Адрес реквизита в книге| +------------+-------------------------------------------------+--------------------------------+ Далее ты свои макросы пишешь так, чтобы они обращались с нужными реквизитами по каким-то символьным обозначениям. Да и адрес реквизита в книге тогда найти просто. Сами макросы могут располагаться именно в этом листе. Дёшево, просто и сердито. В таком случае при изменении формы отчётности ты изменяешь поле " Адрес реквизита в книге" (это будет несколько знаков), а сами макросы переписывать не надо... Добавлено @ 14:21 Сам таким образом делал прогу для страховщиков. Единственное замечание!!!! Чтобы было проще изменять макросы в дальнейшем!!! Ты Реквизит "ищи" на служебном листе по какому-то "Обозначение реквизита в программе", а не обращайся к конкретной ячейке!!! Это на тот случай, если "вдруг" придётся строчку/столбец из табличной части убрать/добавить!!! Это ВАЖНО!!! А-то сначала я обращался по конкретным адресам... Умучался модифицировать... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Другой вариант - прописывание адресов (лучше - базовых адресов логических блоков) как констант в VBA-модуле. Меняется форма - переписывается модуль с константами. Если же логические блоки можно распознавать - например по заголовкам столбцов и строк - вместо констант можно создать блок динамического распознавания адресов блоков при старте и сохранять их в глобальных переменных. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| GrishinUS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 5.9.2006 Где: Самара Репутация: нет Всего: нет |
спасибо!
|
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |