Добрый День!
Искал и по этому форуму и в гугле, но ни чего к сожалению не нашел
Вопрос такой, есть скажем в модуле объявленные переменные допустим:
К примеру требуется перед завершением выполнения кода получить список всех переменных и очистить их.
Все что смог сделать, это получить имена переменых в текстовом виде.
А вот как обратиться к переменной зная ее текстовое имя или как получить список всех переменных виде самих же переменных, или как очистить/удалить из памяти эту переменную зная ее имя, вот с этим разобраться не могу.
Помогите, пожалуйста! ... кто чем может
пример моего кода:
Искал и по этому форуму и в гугле, но ни чего к сожалению не нашел

Вопрос такой, есть скажем в модуле объявленные переменные допустим:
Код |
---|
Public WsR as Worksheet Public i as Integer, j as Long, s as String |
К примеру требуется перед завершением выполнения кода получить список всех переменных и очистить их.
Все что смог сделать, это получить имена переменых в текстовом виде.
А вот как обратиться к переменной зная ее текстовое имя или как получить список всех переменных виде самих же переменных, или как очистить/удалить из памяти эту переменную зная ее имя, вот с этим разобраться не могу.
Помогите, пожалуйста! ... кто чем может

пример моего кода:
Код |
---|
Public WsPD As Worksheet Public Folder2 As Folder Public NedStart As Date, NedFin As Date Public z As Byte, FVS As Byte, RN As Byte Public MagArr() Sub test() 'Получаем список всех модулей, форм, листов и т.д. в данной книге For Each iVBcomponent In ThisWorkbook.VBProject.VBComponents 'Проверяем являеться ли модулем или формой If iVBcomponent.Type = 1 Or iVBcomponent.Type = 3 Then 'Построчно просматриваем часть модуля с объявленными переменными For i = 1 To iVBcomponent.CodeModule.CountOfDeclarationLines 'Разделям по "," x = Split(iVBcomponent.CodeModule.Lines(i, 1), ",") 'просматриваем получившиеся части For j = 0 To UBound(x) 'Разделям по " " и выбираем переменную x1 = Split(x(j), " ")(1) '********************************************************************** 'Выделенная часть на данный момент не имеет смысла, так как x1 всегда будет string содержащий имя переменной Debug.Print x1, TypeName(x1) 'определяем тип переменной Select Case VarLife(x1) Case 1 Set x1 = Nothing Case 2 Erase x1 Case 3 x1 = "" End Select '********************************************************************* Next j Next i End If Next End Sub Function VarLife(curVariables As Variant) As Byte If IsObject(curVariables) Then VarLife = 1: Exit Function If IsArray(curVariables) Then VarLife = 2: Exit Function VarLife = 3 End Function |