Обнулить все переменные VBA
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Обнулить все переменные VBA

Обнулить все переменные VBA

Ответ
Поиск в этой теме
Непрочитано 23.12.2014, 11:58 #1
Обнулить все переменные VBA
Linkor
 
что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119

Есть ли функция, которая обнуляеть все используемые переменные? Ситуация такая: есть куча динамич. массивов, описанных как Public. При вызове процедур из-под автокада все эти массивы сохраняются, нужно чтобы они обнулялись, приходится каждый раз заходить в редактор VBA и нажимать кнопку Stop

Последний раз редактировалось Linkor, 23.12.2014 в 12:57.
Просмотров: 14383
 
Непрочитано 23.12.2014, 12:10
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Прекрасно. А теперь с самого начала - язык, образец кода, версия и разрядность AutoCAD...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.12.2014, 12:26
#3
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Язык VBA вроде написано в сообщении, а от версии и разрядности AutoCad вряд ли что то завист. AutoCad 2008-2015
Пример кода:
Код:
[Выделить все]
 Public Supports() As TSupport
Linkor вне форума  
 
Непрочитано 23.12.2014, 12:40
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Ну, вообще-то есть рекомендации: http://forum.dwg.ru/showthread.php?t=57821
Далее. VBA в версии, кажется, 2014, претерпел значительные изменения (я на нем не пишу, поэтому ситуацию не отслеживаю).
Никто не мешает дописать специальную "дебажную" процедуру, которая будет присваивать всем таким переменным необходимые значения. А для предоставления кода "на сторону" ее убрать
P.S. Я бы вообще VBA уже не рассматривал. .NET намного интереснее.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.12.2014, 12:56
#5
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Моими процедурами пользуются на разных версиях AutoCad, нужна универсальная вещь.
В начале выполнения кода значение переменной светится в отладчике как Nothing. После этого пошли назначения Redim Preserve ...
Как в конце обнулить эту переменную опять в Nothing. Redim Supports(0 to 0) использовать не хочу, так как Ubound(Supports) будет давать 0, а должен давать ошибку
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
P.S. Я бы вообще VBA уже не рассматривал. .NET намного интереснее.
Столько всего написано на VBA, сама мысль о переписании на другой язык уже утомляет
Linkor вне форума  
 
Непрочитано 23.12.2014, 13:09
#6
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Supports = Nothing
trir вне форума  
 
Автор темы   Непрочитано 23.12.2014, 13:18
#7
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Цитата:
Сообщение от trir Посмотреть сообщение
Supports = Nothing
Compile error:
Invalid use object
Linkor вне форума  
 
Непрочитано 23.12.2014, 13:24
#8
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


Erase Supports
trir вне форума  
 
Автор темы   Непрочитано 23.12.2014, 14:05
#9
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Цитата:
Сообщение от trir Посмотреть сообщение
Erase Supports
ОГРОМНОЕ СПАСИБО! То что надо
А нет ли случайно функции, которая сразу все переменные уничтожает?
Linkor вне форума  
 
Непрочитано 23.12.2014, 14:59
#10
trir


 
Регистрация: 18.12.2010
Сообщений: 5,108


C:\format C
trir вне форума  
 
Непрочитано 23.12.2014, 15:17
#11
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,692


End в конце модуля, и карма всех переменных очистится.. Это если не надо часть переменных сохранять..

Цитата:
"End Terminates execution immediately. Never required by itself but may be placed anywhere in a procedure to end code execution, close files opened with the Open statement and to clear variables. "
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV вне форума  
 
Автор темы   Непрочитано 23.12.2014, 15:26
#12
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Просто так End написать не даёт компилятор
может не там пишу?
Linkor вне форума  
 
Непрочитано 23.12.2014, 15:49
#13
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Linkor Посмотреть сообщение
Есть ли функция, которая обнуляеть все используемые переменные? Ситуация такая: есть куча динамич. массивов, описанных как Public. При вызове процедур из-под автокада все эти массивы сохраняются, нужно чтобы они обнулялись, приходится каждый раз заходить в редактор VBA и нажимать кнопку Stop
А зачем объявлять динамические массивы глобальными, если не нужно сохранять данные между вызовами методов? И в VBA тоже есть классы, урезанные, но есть - это если через массивы нужно обмениваться данными между процедурами)

Последний раз редактировалось Сергей812, 23.12.2014 в 15:56.
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.12.2014, 16:01
#14
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
зачем объявлять динамические массивы глобальными,
Чтоб другие модули видели

----- добавлено через 41 сек. -----
Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в VBA тоже есть классы, урезанные, но есть - это если через массивы нужно обмениваться данными между процедурами)
где про это можно почитать?
Linkor вне форума  
 
Непрочитано 23.12.2014, 16:04
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Цитата:
Сообщение от Linkor Посмотреть сообщение
Чтоб другие модули видели
Передавай в качестве параметров.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 23.12.2014, 16:12
#16
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Передавай в качестве параметров.
В данном случае не удобно, слишком много аргументов для большого числа процедур и функций
Linkor вне форума  
 
Непрочитано 23.12.2014, 16:35
#17
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Linkor Посмотреть сообщение
где про это можно почитать?
Ну для ознакомления можно тут, в основе VBA для офиса и автокада лежит одно и тоже, только объектные модели разные.
Сергей812 вне форума  
 
Автор темы   Непрочитано 23.12.2014, 16:54
#18
Linkor

что хочу, то и делаю
 
Регистрация: 30.06.2014
Сообщений: 119


Сергей812 спасибо за ссыль!
Linkor вне форума  
 
Непрочитано 23.12.2014, 17:15
#19
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Цитата:
Сообщение от Linkor Посмотреть сообщение
В данном случае не удобно, слишком много аргументов для большого числа процедур и функций
Я не помню, в VBA есть понятие перегрузки или нет...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.12.2014, 17:28
#20
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Я не помню, в VBA есть понятие перегрузки или нет...
Попробовал простейший код
Код:
[Выделить все]
Public Sub test1(ByVal arg1 As Integer)
    MsgBox "Integer"
End Sub

Public Sub test1(ByVal arg1 As Single)
    MsgBox "Single"
End Sub

Public Sub Test()
    Dim a1 As Single
    test1 (a1)
    Dim a2 As Integer
    test1 (a2)
End Sub
В подсказке показывает только аргументы первой функции с Integer, при попытке выполнить Test ругается: ambiguous name detected - т.е., похоже, не поддерживается) Или какой то извращенный синтаксис...
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Обнулить все переменные VBA



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD 2009 LT - есть ли способ обнулить координату z??? Sokolov_Art AutoCAD 5 31.01.2011 15:20
Формируем переменные из строки в файле Zaghim Программирование 7 02.09.2010 11:57
Недокументированные сист. переменные Makswell Справочник команд 114 19.06.2010 21:45
Rак присвоить переменные точкам после деления объекта? solo123 Программирование 14 16.11.2009 17:05
Как извлекать переменные которые считает MASSPROP в LISPe? Денис LISP 2 13.10.2003 12:55