Мы рассмотрели способы записи значения ячейки из приложений Delphi,
но ячейка и сама может принимать любое значение, когда она содержит
формулу. Формула представляет собой некое математическое выражение,
состоящее из констант, адресов ячеек, стандартных функций Excel, пользо-
вательских функций и математических символов, записанных в виде строки.
Для придания ячейке таких свойств используют запись строки, представ-
ляющей формулу, в свойство Formula объекта Range. Для чтения формулы
также используется свойство Formula.
Зададим для выбранной ячейки ее формулу с помощью следующей про-
цедуры.
Запись формулы
procedure TOKBottomDlg2.Button5Click(Sender: TObject);
begin
Range.Formula:=valuel.Text;
end;
В ячейку В7 запишем формулу, позволяющую вычислить конечную дату,
просуммировав начальную дату и количество дней. Формула представляет
собой выражение =А1+А2. Результат выполнения этой процедуры представ-
лен на рис. 12.7.
Есть и другой способ, который требует определенных знаний от пользовате-
ля, но в некоторых условиях быть более эффективным. Этот способ осно-
ван на использовании мастера функций, представляющего собой последова-
тельность диалоговых окон, которые позволяют конструировать формулу
для данной ячейки по шагам. Для активизации данного способа необходимо
вызвать метод FunctionWizard объекта Range. Рассмотрим следующую про-
цедуру, которую можно использовать для конструирования формулы.
Вызов мастера функций
procedure TOKBottomDlg2.ButtonlOClick(Sender: TObject);
begin
Range.FunctionWizard;
end;
Вызов этой процедуры, содержащей только оператор активизации метода
FunctionWizard, повлечет запуск диалогового окна (рис. 12.8). После выпол-
нения всех необходимых шагов в ячейке Range будет записана формула.
Рис. 12.7. Запись формулы в выбранную ячейку
Рис. 12.8. Окно мастера функций
Иногда требуется проверить, что находится в ячейке — значение, записан-
ное пользователем, или сформированное в результате выполнения формулы.
Для этого можно анализировать содержимое свойства Formula объекта
Range, но лучше использовать свойство HasFormula. Если оно имеет значе-
ние True, то ячейка содержит формулу, если False — то нет.
Проверка наличия формулы в ячейке
procedure TOKBottomDlg2.Button9Click(Sender: TObject);
begin
if Range.HasFormula
then messagebox(handle,'Данная ячейка содержит формулу!','Внимание!',0)
else messagebox(handle,'Данная ячейка не содержит формулу!',
'Внимание!',0)
end;
В нашем примере ячейка В1 содержит формулу — это можно определить с
помощью представленной процедуры, результат выполнения которой пока-
зан на рис. 12.9.
Рис. 12.9. Проверка наличия формулы в ячейке
Определив, что нужная ячейка содержит формулу, мы можем прочитать эту
формулу с целью корректировки или анализа ее содержимого. Процедура
чтения формулы может быть такой.
Чтение формулы
procedure TOKBottomDlg2.Button8Click(Sender: TObject);
begin
valuel.Text:=Range.Formula;
end;
|