Страницы: 1
RSS
Как программно получить результат вычисления формулы?
 
Допустим ячейка содержит какую-то формулу. Как не вписать эту формулу в ячейку, а программно вычислить значение этой формулы и присвоить ячейке готовый результат??
Помню, что это какой-то метод объекта Application, но в упор не помню какой...
Изменено: Master2KAZ - 06.09.2013 09:09:09
 
WorksheetFunction.
Тут находятся все функции
 
т.е. ActiveCell.FormulaR1C1 = "=MATCH(""*"",A1:A10,)"
можно заменить ActiveCell =  WorksheetFunction.Match("*","A1:A10")
Изменено: Master2KAZ - 06.09.2013 09:17:34
 
Так Вы именно формулу в ячейке и получите. Читайте ответ №2, ну еще evaluate.
Я сам - дурнее всякого примера! ...
 
А можно небольшой пример?
 
Примеров на форуме полно. Поиск работает. Ключевые слова Вам подсказали.
Я сам - дурнее всякого примера! ...
 
Ну и на том спасибо!
 
Если кому интересно, пример

Application.WorksheetFunction.Match("*", Rows(31), Empty)

возвращает номер столбца первой непустой ячейки в 31-й строке/
Изменено: Master2KAZ - 06.09.2013 09:32:32
 
Master2KAZ
Цитата
ActiveCell = WorksheetFunction.Match("*","A1:A10")
В принципе, да так и будет работать, только аргументы ссылающиеся на ячейки или диапазоны таблицы нужно помещать в []
ActiveCell.Value = Application.WorksheetFunction.Match("*",[A1:A10])

P. S. [A1:A10] - эквивалент Range("A1:A10") со свойством по умолчанию Value
Изменено: anvg - 06.09.2013 09:31:44
 
Цитата
[A1:A10] - эквивалент Range("A1:A10") со свойством по умолчанию Value
Неверно. Квадратные скобки обозначают вычисление или выполнение. Если внутри кода есть ["выражение"], то VBA пытается сначала выполнить VBA-код (если выражение в скобках не является математическим выражением и совпадает с именем свойства, метода, процедуры, функции или UDF и т.п.)
Код
Sub Test_MBox()
    [MsgBox] "Вызвали встроеный класс VBA"
End Sub

Sub Test_MBox2()
    [MBox]
End Sub
Sub MBox()
    MsgBox "Вызвали свою процедуру из VBA"
End Sub

Если VBA ничего не нашел у себя с чем можно было бы сопоставить "выражение", то только после этого он продолжает искать уже  в объектной модели Excel, среди имен и формул.


Насчет свойства по умолчанию.
Заполните диапазон А1В10 значениями и выполните код ниже:
Код
Range("A1:A10") = Range("B1:B10")


Потом долго радуйтесь значению по умолчанию :-)

Поэтому я в своих кодах всегда указываю какой свойство объекта мне надо присвоить или получить.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх