Про Erase и Nothing - в Справке. VbNullString и "" это разные вещи, в Справке тоже упоминается. Empty это константа типа Variant, поэтому при присвоении преобразуется в 0, пустую строку, False.
Казанский написал: Про Erase и Nothing - в Справке.
Имеется ввиду не про каждую команду в отдельности (название которой еще поискать нужно), а в комплексе про все команды обнуления. Или может быть есть табличка, в которой указаны все команды обнуления со ссылкой в справку для каждой конкретной команды из этой таблички.
Примерно как в этой статье про объявление переменных
А зачем, собственно, обнуление потребовалось? Я понимаю некоторые объекты и массивы. Но остальные-то переменные.После выполнения процедуры объявленные внутри неё переменные сами обнуляются и память не засоряют. Следовательно очистка как таковая ничего не даст...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Alexander88, Нашел только для C - https://msdn.microsoft.com/ru-ru/library/83fhsxwc.aspx, есть ссылка для Excel ? The_Prist, Это уже вопрос другой. Была похожая тема, из четырех ответов - подходящим оказался только один. Так и здесь - зачем и почему, можно пообсуждать, но когда вообще нет такой таблички, то неудобно. Банально переменная используется в цикле и приходится либо присваивать значение и обнулять через if else или обнулять через подобные команды, список которых я и ищу. или например объект забивает память до 100%, если обрабатывается в цикле без обнуления
Тут как бы понимаете...Вопрос зачем не совсем от лени задан. Если для очистки памяти - то это лишнее. Если для дальнейшего использования - значит алгоритмы хромают. Ведь Вы сами назначаете значения переменным и вольны делать проверки их значения. Но раз так надо, то по простому: Integer,Long,Byte,Double,Decimal(уже не используется),Currency,Syngle,Date = по умолчанию имеют значение 0. Его и надо присваивать. String - ="" Array - Erase Arr Object - Set obj = Nothing
Variant в зависимости от назначенного типа. Но можно просто =0.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
По поводу Object... Где-то когда-то мелькало, что переменные объектов чистить обязательно, иначе остаются в памяти. Завршаем процедуру - чистим. Правда? Неправда?
Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины? Думаете одно? Ничего подобного. Никто же не знает сколько у него уже было яблок до этого. Мораль - обнуляйте переменные!!!
The_Prist, Спасибо за комментарий по разным типам переменных
Цитата
Правда? Неправда?
Однозначно да или нет не могу сказать, но это как минимум зависит конкретно от самого объекта и от количества циклов, прецеденты уже были. если проблем в конкретном примере нет, то наверное и не обязательно
Вить, на самом деле не совсем правда. VB вычищает память после завершения процедуры. Правда, не всегда корректно может это сделать именно для объектов. В последних версиях VBA не наблюдал такого. Проблемы могут возникнуть при очистке переменных уровня проекта - с ними у VBA бывают проблемы при закрытии проекта, в котором они были инициализированы. При этом это могло повлечь остаток в памяти ссылки на уже не существующий объект, с которым она все еще была связана(можно наблюдать это при попытке переместить файл и запрет ОС на это - спасает разблокировка процесса путем закрытия Excel).
Для своей уверенности лучше очищать. В больших проектах так делаю. А вообще в последнее время обленился с этим делом в VBA - редко это делаю. Но и проблем от этого не наблюдал. Вот в C это дело не прощается - лучше вычистить все :-)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...