Добрый День!
Искал и по этому форуму и в гугле, но ни чего к сожалению не нашел
Вопрос такой, есть скажем в модуле объявленные переменные допустим:
Код |
---|
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
|