В последнее время возникло несколько вопросов, связанных с методом Application.Evaluate
, вызываемым из Excel VBA. Старый макроязык XLM также предоставляет функцию EVALUATE()
. Оба могут быть весьма полезны. Кто-нибудь знает, почему представленный оценщик может обрабатывать общие выражения?
Моя догадка состоит в том, что Excel нужно было дать людям способ получить диапазоны от строковых адресов и получить значение именованных формул, и самым простым способом было открыть портал для оценщика выражений. (Справка по версии VBA говорит о том, что она предназначена для «преобразования имени Microsoft Excel в объект или значение».) Но, конечно, вам не нужна способность оценивать произвольные выражения просто для этого. (То есть Excel может предоставить метод Name.Evaluate
или что-то еще.)
Application.Evaluate
кажется вроде ... незаконченным. Его полное поведение не очень хорошо задокументировано, и есть немало причуд и ограничений (как описано здесь Чарльзом Уильямсом: http://www.decisionmodels.com/calcsecretsh.htm) с тем, что раскрыто.
Я полагаю, что ответом может быть просто «почему бы не разоблачить это?», Но мне было бы интересно узнать, какие дизайнерские решения привели к тому, что эта функция приняла форму, которую она делает. Если это не удастся, мне будет интересно услышать другие догадки.