Вызов функции класса при помощи Application.Run в VBA #601968


#0 by ШтушаКутуша
Есть код функции в классе   Public Function GetUsr as string  GetUsr="!!!!" end Function и надо эту функцию "GetUsr" вызвать из метода Public Sub Caller(Optional NameFun as String="GetUsr")  dim s as string  s=Application.Run(NameFun) 'в этом месте гнется End Sub в модуле, пожалуйста, а вот вызвать из класса-фиг. Может у кого есть подсказочка?
#1 by Господин ПЖ
класс - это кто? если функция класса и не static - нужен экземпляр
#2 by ШтушаКутуша
в VBA есть понятие "Class" внутри набивается код методов класса и нужно внутри метода класса вызвать функцию этого же класса
#3 by Господин ПЖ
через this. ?
#4 by Господин ПЖ
если ты дергаешь методы того же экземпляра
#5 by ШтушаКутуша
в VBA нет нотации "this" это в java, а в VBA "Me", как в Delphi "Self"
#6 by Господин ПЖ
какая разница... в C# есть... суть не меняется
#7 by ШтушаКутуша
надо имя вызываемой функции передавать как строку, можно б был указатель, но VBA-указателей нема
#8 by Господин ПЖ
а так? Sub userfile_click        Dim fname As String 'first name    Dim sname As String 'surname     'Took wname out of here             'Changed .activate code to .offfset code    sname = ActiveCell    fname = ActiveCell.Offset(0, 1)    wname = sname & fname & ".xls"         'Call fileopen sub    Call getfile(wname)        End 'to close the form End Sub Sub getfile(nametoopen)         'Uses wname from first sub    Workbooks.Open FileName:="c:My documents" & nametoopen     End Sub
#9 by ШтушаКутуша
Спасибо. :) но к сожалению это не то
#10 by smaharbA
modul1.GetUsr
#11 by ШтушаКутуша
Public Sub Caller(Optional NameFun as String="GetUsr") dim s as string s=Application.Run("MyClass.GetUser") End Sub Так??
#12 by Torquader
В vba нет this - просто вместо него пишется me а работает примерно также то есть можно пользоваться указателями на объекты. Другое дело,что функции класса - не совсем функции - нельзя получить указатель на них то есть нужно ссылаться на эземпляр объекта и вызывать функцию Для вызова же кода из строки существует execute и executeglobal,через которые можно исполнить любой код. Удачи.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С