KUDRIN Пользователь Сообщений: 324 |
#1 07.04.2015 18:49:26 Здравствуйте!
какие из них универсальные? например из этого списка «a = Empty» работает и для & и для $ Изменено: KUDRIN — 07.04.2015 19:31:23 |
||
Про Erase и Nothing — в Справке. |
|
KUDRIN Пользователь Сообщений: 324 |
#3 07.04.2015 19:05:58
Имеется ввиду не про каждую команду в отдельности (название которой еще поискать нужно), Примерно как в этой статье про объявление переменных Изменено: KUDRIN — 07.04.2015 19:31:41 |
||
Добрый вечер |
|
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
А зачем, собственно, обнуление потребовалось? Я понимаю некоторые объекты и массивы. Но остальные-то переменные.После выполнения процедуры объявленные внутри неё переменные сами обнуляются и память не засоряют. Следовательно очистка как таковая ничего не даст… Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
KUDRIN Пользователь Сообщений: 324 |
Alexander88
, Нашел только для C — https://msdn.microsoft.com/ru-ru/library/83fhsxwc.aspx , есть ссылка для Excel ? The_Prist , Это уже вопрос другой. Была похожая тема , из четырех ответов — подходящим оказался только один. Так и здесь — зачем и почему, можно пообсуждать, но когда вообще нет такой таблички, то неудобно. Банально переменная используется в цикле и приходится либо присваивать значение и обнулять через if else или обнулять через подобные команды, список которых я и ищу. Изменено: KUDRIN — 07.04.2015 19:34:25 |
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Тут как бы понимаете…Вопрос зачем не совсем от лени задан. Если для очистки памяти — то это лишнее. Если для дальнейшего использования — значит алгоритмы хромают. Ведь Вы сами назначаете значения переменным и вольны делать проверки их значения. Variant в зависимости от назначенного типа. Но можно просто =0. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
vikttur Пользователь Сообщений: 47199 |
По поводу Object… Где-то когда-то мелькало, что переменные объектов чистить обязательно, иначе остаются в памяти. |
KUDRIN Пользователь Сообщений: 324 |
#9 07.04.2015 19:50:36 Буратине дали три яблока. Два он съел. Сколько яблок осталось у Буратины? Думаете одно? Ничего подобного. Никто же не знает сколько у него уже было яблок до этого. Мораль — обнуляйте переменные!!! The_Prist , Спасибо за комментарий по разным типам переменных
Однозначно да или нет не могу сказать, но это как минимум зависит конкретно от самого объекта и от количества циклов, прецеденты уже были. если проблем в конкретном примере нет, то наверное и не обязательно Изменено: KUDRIN — 07.04.2015 19:55:22 |
||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Вить, на самом деле не совсем правда. VB вычищает память после завершения процедуры. Правда, не всегда корректно может это сделать именно для объектов. В последних версиях VBA не наблюдал такого. Для своей уверенности лучше очищать. В больших проектах так делаю. А вообще в последнее время обленился с этим делом в VBA — редко это делаю. Но и проблем от этого не наблюдал. Вот в C это дело не прощается — лучше вычистить все Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
vikttur Пользователь Сообщений: 47199 |
Понял, спасибо. |
Alexander88 Пользователь Сообщений: 400 |
#12 07.04.2015 20:08:13
Можно посмотреть в окне Locals при обьявлении
Изменено: Alexander88 — 07.04.2015 20:11:12 |
||||
The_Prist Пользователь Сообщений: 14182 Профессиональная разработка приложений для MS Office |
Никак. Объект сразу после End With уничтожается. Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы… |
Alexander88 Пользователь Сообщений: 400 |
#14 07.04.2015 20:34:41 The_Prist, Спасибо |
Содержание
- — Как сбросить все переменные в Excel VBA?
- — Как очистить переменную в VBA?
- — Как очистить переменную?
- — Как очистить кеш памяти в Excel VBA?
- — Как выпустить объект в VBA?
- — Как очистить массив в VBA?
- — Как очистить строку в VBA?
- — Как использовать Isblank в VBA?
- — Нулевой или пустой в VBA?
- — Как проверить, пуста ли переменная?
- — Что такое пустая переменная?
- — Как очистить переменную в R?
- — Безопасно ли удалить Officefilecache?
- — Где хранится кеш Excel?
Код VB:
- Вариант явный.
- Dim mlLongVar As Long.
- Sub ProcOne ()
- mlLongVar = 10.
- MsgBox mlLongVar.
- mlLongVar = Пусто ‘Сброс настроек ничего.
- Конец подписки.
- Sub ProcTwo ()
Как очистить переменную в VBA?
Вы можете назначить ключевое слово Empty, чтобы явно установить для переменной значение Empty. Используйте функцию IsEmpty чтобы проверить, инициализирована ли переменная. Функция возвращает логическое значение — возвращает True для неинициализированной переменной или если для переменной явно задано значение Empty, в противном случае функция возвращает False.
Как очистить переменную?
Описание. В Командлет Clear-Variable удаляет данные, хранящиеся в переменной, но не удаляет переменную. В результате значение переменной равно NULL (пусто). Если переменная имеет указанный тип данных или объекта, этот командлет сохраняет тип объекта, хранящегося в переменной.
Как очистить кеш памяти в Excel VBA?
Использование кода VBA
Дважды щелкните «ThisWorkbook» на панели «Проект» слева. Это откроет окно кода. Чтобы запустить код, нажмите F5. Это очистит кеш сводных таблиц в активной книге.
Как выпустить объект в VBA?
Освободить все объектные переменные из памяти
- Name = Range («GroupName»)
- Eff = Диапазон («EffDate»)
- Spec = Range («SpecDed»)
- Spec2 = Диапазон («g35»)
- Spec3 = Диапазон («g36»)
- Установите Name = Nothing.
- Установите Eff = Nothing.
- Установите Spec = Nothing.
Как очистить массив в VBA?
VBA Очистить массив (стереть)
Тебе следует используйте оператор «Стереть» очистить массив в VBA. Добавьте ключевое слово «Erase» перед именем массива, который вы хотите очистить, но обратите внимание, что все значения будут сброшены из массива. В следующем массиве у вас есть 3 элемента, и мы использовали оператор erase, чтобы стереть все.
Как очистить строку в VBA?
Вариантная переменная имеет пустое значение до того, как ей будет присвоено значение.
- Инициализация варианта. Тип данных Empty — это значение по умолчанию, когда вы объявляете переменную как Variant. …
- Empty = 0. Ключевое слово Empty также является нулевым значением. …
- Empty = «» Ключевое слово Empty также является строкой нулевой длины. …
- Функция IsEmpty. …
- vbVarType.
Как использовать Isblank в VBA?
Если вы хотите проверить, пуста ли ячейка рабочего листа в VBA, вы не можете использовать функцию рабочего листа ISBLANK. В VBA вы должен использовать функцию ISEMPTY. В этом примере мы проверим, пуста ли ячейка A1. Если ячейка A1 пуста, отобразится сообщение «Ячейка A1 пуста».
Нулевой или пустой в VBA?
НУЛЕВОЙ в VBA — это логическая функция, которая используется для определения, является ли данная ссылка пустой или NULL или нет, поэтому имя ISNULL, это встроенная функция, которая дает нам истинный или ложный результат в зависимости от результата, который мы можем получить к выводам, если ссылка пуста, она возвращает истинное значение, иначе ложь …
Как проверить, пуста ли переменная?
Чтобы узнать, пуста ли переменная bash:
- Вернуть истину, если переменная bash не установлена или установлена в пустую строку: if [-z «$ var»];
- Другой вариант: [-z «$ var»] && echo «Пусто»
- Определите, пуста ли переменная bash: [[! -z «$ var»]] && echo «Не пусто» || эхо «Пусто»
Что такое пустая переменная?
Переменная считается пустой если он не существует или его значение равно false .
Как очистить переменную в R?
Очистка окружающей среды
- Использование команды rm (): если вы хотите удалить одну переменную из среды R, вы можете использовать команду «rm ()», за которой следует переменная, которую вы хотите удалить. -> rm (переменная) …
- Использование графического интерфейса: мы также можем очистить все переменные в среде, используя графический интерфейс на панели окружения.
Безопасно ли удалить Officefilecache?
Исправить кэш документов Office
Когда происходит повреждение файла кеша, ваш файл будет казаться застрявшим в Центре загрузки Office. … Удаление кеша — это не такт опасно, и это может решить проблему синхронизации.
Где хранится кеш Excel?
Windows 11/10: C: Users AppData Local Microsoft Office UnsavedFiles. Windows 8/7 / Vista: C: Users UserName AppData Local Microsoft Office UnsavedFiles. Windows XP: C: Documents and Settings UserName Local Settings Application Data Microsoft Office UnsavedFiles.
Интересные материалы:
Как работает проверка имён?
Как работает провод?
Как работает proxmox?
Как работает PSP?
Как работает пылесос?
Как работает радио Baofeng?
Как работает радио Bose Wave?
Как работает радиотелефон?
Как работает распродажа флеш-памяти Amazon?
Как работает разблокировка по лицу Xiaomi?
У меня ситуация, когда мне нужно clear
переменную lastWord
, чтобы msgbox
ничего не отображал в следующем loop
.
Следующий код — это просто пример.
Sub clear_lastWord_Variable()
Dim wordArr() As String
Dim lastword As String
Do
selection.Find.ClearFormatting
selection.Find.Font.Bold = True
With selection.Find
.Forward = True
.Wrap = wdFindStop
End With
selection.Find.Execute
If selection.Find.Found Then
wordArr = Split(selection, " ")
For i = LBound(wordArr) To UBound(wordArr) Step 1
lastword = wordArr(i)
Next i
MsgBox lastword
' here should be something to clear lastword
Else
Exit Do
End If
Loop
End Sub
Это видео может помочь вам узнать секретный трюк https://youtu.be/MaiSBVguh28
2 ответа
Лучший ответ
Вы не можете «очистить» переменную, не являющуюся объектом, вы можете только установить для нее определенное значение. Для строковой переменной это обычно пустая строка ""
.
lastword = ""
Или (идентичный)
lastword = vbNullString
Для объектных переменных существует Set myObj = Nothing
.
17
Andre
15 Май 2016 в 07:30
Если ваша переменная не является объектом, вы также можете:
lastword = Empty
6
I.Samp
21 Дек 2018 в 09:52
Помогаю со студенческими работами здесь
При вызове объекта Range, VBA самостоятельно меняет Range на rAnge
Всем доброго дня, у меня такой вопрос.
По незнанию создал функцию rAnge(), теперь при вызове…
Содержимое переменной в качестве имени переменной
Подскажите пожалуйста возможно ли использовать содержимое строковой переменной (допустим…
Изменение типа данных Range
Здравствуйте, форумчане.
Вопрос от ученика.
Есть макрос, который сравнивает данные в таблице и в…
Out of range в поле типа TIME
Здравствуйте!
Есть поле типа TIME со значением 00:00:00. Пытаюсь увеличить его на 660, выдает…
Искать еще темы с ответами
Или воспользуйтесь поиском по форуму:
2
i fell into a case where clearing the entire array failed with dim/redim :
having 2 module-wide arrays, Private inside a userform,
One array is dynamic and uses a class module, the other is fixed and has a special type.
Option Explicit
Private Type Perso_Type
Nom As String
PV As Single 'Long 'max 1
Mana As Single 'Long
Classe1 As String
XP1 As Single
Classe2 As String
XP2 As Single
Classe3 As String
XP3 As Single
Classe4 As String
XP4 As Single
Buff(1 To 10) As IPicture 'Disp
BuffType(1 To 10) As String
Dances(1 To 10) As IPicture 'Disp
DancesType(1 To 10) As String
End Type
Private Data_Perso(1 To 9, 1 To 8) As Perso_Type
Dim ImgArray() As New ClsImage 'ClsImage is a Class module
And i have a sub declared as public to clear those arrays (and associated run-time created controls) from inside and outside the userform like this :
Public Sub EraseControlsCreatedAtRunTime()
Dim i As Long
On Error Resume Next
With Me.Controls 'removing all on run-time created controls of the Userform :
For i = .Count - 1 To 0 Step -1
.Remove i
Next i
End With
Err.Clear: On Error GoTo 0
Erase ImgArray, Data_Perso
'ReDim ImgArray() As ClsImage ' i tried this, no error but wouldn't work correctly
'ReDim Data_Perso(1 To 9, 1 To 8) As Perso_Type 'without the erase not working, with erase this line is not needed.
End Sub
note : this last sub was first called from outside (other form and class module) with Call FormName.SubName
but had to replace it with Application.Run FormName.SubName
, less errors, don’t ask why…