Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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

Private Sub Worksheet_Change(ByVal Target As Range)
...
ВыделенныйSub
...
end sub

Private Sub ВыделенныйSub()
...
end sub

Можно вытащить на модуль, не забудте только процедуру объявить как Public ;)

Ответить

Номер ответа: 2
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #2
Добавлено: 28.03.07 17:05
____ Интересно другое — а зачем захотелось делить?
____ Ведь общая сумма кода не будет меньше :(

Ответить

Номер ответа: 3
Автор ответа:
 KreAtoR



Вопросов: 120
Ответов: 438
 Профиль | | #3 Добавлено: 28.03.07 19:13
_ Ведь общая сумма кода не будет меньше :(

даже на две строки больше :)))))

Ответить

Номер ответа: 4
Автор ответа:
 Visual Basic .NET 2005 Пиратская версия



Вопросов: 38
Ответов: 190
 Web-сайт: ex3mos.ucoz.ru
 Профиль | | #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-сайт: www.adsemenov.ru
 Профиль | | #7
Добавлено: 29.03.07 11:14
____ Вторую половину вышеприведённого кода надо вставить в модуль, изменив объявление на Public:
Public Sub ВыделенныйSub()
...
end sub

____ Модуль вставляется в том же меню, что и процедуры и формы.
____ А сколько это — слишком большая Sub???

Ответить

Номер ответа: 8
Автор ответа:
 bi-lya



Вопросов: 1
Ответов: 125
 Профиль | | #8 Добавлено: 29.03.07 11:21
А что такое "Excel не может ее схавать"? Ошибка вылазит, или что?

Ответить

Номер ответа: 9
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #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
Я не поленился и "насморкал" "большую" Sub. Выскакивает ошибка — too large. Предельный размер памяти под компиляцию — 64К. И как раз советуют поделить процедуру.

а если часть кода в модуль запихать от этого компиляционный объем уменьшиться что ли?????

Ответить

Номер ответа: 12
Автор ответа:
 Visual Basic .NET 2005 Пиратская версия



Вопросов: 38
Ответов: 190
 Web-сайт: ex3mos.ucoz.ru
 Профиль | | #12
Добавлено: 29.03.07 13:13
Придется ужимать. Вообще-то я никогда не думал что есть ограничения. В С++ и VB.NET их то нет...

Ответить

Номер ответа: 13
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #13
Добавлено: 29.03.07 13:34
компиляционный объем уменьшиться что ли?????
____ Уменьшится. Компиляция происходит по каждой Sub отдельно. Я проверял. Иначе бы не ответил так.

Ответить

Номер ответа: 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
Так в том то вся и проблема что ничего не повторяется

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам