Страница: 1 |
Страница: 1 |
Вопрос: Народ подскажите пожалуйста.
Добавлено: 28.03.07 15:24
Автор вопроса: Konstantin
Есть процедура Private Sub Worksheet_Change(ByVal Target As Range) она получилась немного большой, и поэтому ее надо разделить на две, как можно осуществить на практике????? Заранее большое спасибо.
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
bi-lya
Вопросов: 1
Ответов: 125
Профиль | | #1
Добавлено: 28.03.07 16:31
...
ВыделенныйSub
...
end sub
Private Sub ВыделенныйSub()
...
end sub
Можно вытащить на модуль, не забудте только процедуру объявить как Public
Номер ответа: 2
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #2
Добавлено: 28.03.07 17:05
____ Интересно другое — а зачем захотелось делить?
____ Ведь общая сумма кода не будет меньше
Номер ответа: 3
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #3
Добавлено: 28.03.07 19:13
даже на две строки больше ))))
Номер ответа: 4
Автор ответа:
Visual Basic .NET 2005 Пиратская версия
Вопросов: 38
Ответов: 190
Web-сайт:
Профиль | | #4
Добавлено: 29.03.07 09:26
На три...
Номер ответа: 5
Автор ответа:
Konstantin
Вопросов: 7
Ответов: 12
Профиль | | #5
Добавлено: 29.03.07 09:47
Если можно пожалуйста по подробнее в данном виде не работает.
Номер ответа: 6
Автор ответа:
Konstantin
Вопросов: 7
Ответов: 12
Профиль | | #6
Добавлено: 29.03.07 09:49
Делить понадобилось для того, что процедура получилась очень большая и Excel не может ее схавать.
Номер ответа: 7
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #7
Добавлено: 29.03.07 11:14
____ Вторую половину вышеприведённого кода надо вставить в модуль, изменив объявление на Public:
...
end sub
____ Модуль вставляется в том же меню, что и процедуры и формы.
____ А сколько это — слишком большая Sub???
Номер ответа: 8
Автор ответа:
bi-lya
Вопросов: 1
Ответов: 125
Профиль | | #8
Добавлено: 29.03.07 11:21
А что такое "Excel не может ее схавать"? Ошибка вылазит, или что?
Номер ответа: 9
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #9
Добавлено: 29.03.07 11:32
____ Я не поленился и "насморкал" "большую" Sub. Выскакивает ошибка — too large. Предельный размер памяти под компиляцию — 64К. И как раз советуют поделить процедуру.
____ Я думаю, что не надо в модуль что-то выносить, а сделать, как bi-lya в первом ответе, только, может быть, для удобства все переменные вытащить за пределы Sub'ов и объявить их через Public.
Номер ответа: 10
Автор ответа:
Konstantin
Вопросов: 7
Ответов: 12
Профиль | | #10
Добавлено: 29.03.07 12:22
Да. выбрасывает too large.
Номер ответа: 11
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #11
Добавлено: 29.03.07 12:41
а если часть кода в модуль запихать от этого компиляционный объем уменьшиться что ли?????
Номер ответа: 12
Автор ответа:
Visual Basic .NET 2005 Пиратская версия
Вопросов: 38
Ответов: 190
Web-сайт:
Профиль | | #12
Добавлено: 29.03.07 13:13
Придется ужимать. Вообще-то я никогда не думал что есть ограничения. В С++ и VB.NET их то нет...
Номер ответа: 13
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #13
Добавлено: 29.03.07 13:34
Номер ответа: 14
Автор ответа:
KreAtoR
Вопросов: 120
Ответов: 438
Профиль | | #14
Добавлено: 29.03.07 13:52
Уменьшится. Компиляция происходит по каждой Sub отдельно. Я проверял. Иначе бы не ответил так.
ну тогда делай Sub через каждые скажем 5-10 строк. получится из ста строк 10 Subs
в десять раз меньше памяти.
заути цикл и уреж все наполовину, или у тя там вообще ничего не повторяется????
Номер ответа: 15
Автор ответа:
Konstantin
Вопросов: 7
Ответов: 12
Профиль | | #15
Добавлено: 02.04.07 09:39
Так в том то вся и проблема что ничего не повторяется