Dim sc as New ScriptControl
sc.Language = "vbscript"
If sc.Eval(str$) Then ...
GSerg писал(а):А где Eval возьмёт объекты, на которые ссылается строка?
Начнем с того, откуда в строке объекты? Если автор планировал просто подставить ее в If, то там по идее должно быть записано логическое выражение, состоящее из каких-то значений. Если выражение состоит из переменных, то видимо там же должны быть записаны их определения и значения. Что мешает разбить строку на две, в первой дефиниции, во второй выражение? Первую добавляем через AddCode, вот Eval и получает все необходимые данные.GSerg писал(а):А где Eval возьмёт объекты, на которые ссылается строка?
Mikle писал(а):Можно проще, весь код не в модуле, а в форме или классе. Все массивы, переменные и т. д., которые могут понадобиться в строке, объявлены как Public. Передаем в скрипт форму (AddObject) - и к переменным обращаемся так: Form1.MyVar. Можно обрамить все это With блоком, и писать имена просто с точки.
Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 46