Jan Holst Jensen wrote:
Hi.

I am trying to figure out how to evaluate a formula string. If I have selected a single cell I can get to the formula via ThisComponent.GetCurrentSelection.Formula but I haven't been able to find a way to evaluate that formula.

Excel VBA has the Evaluate() function - what is the equivalent in the OpenOffice API ? I did look at com.sun.star.sheet.FunctionAccess but that works only for a single function name and requires you to feed in all parameters manually.

I am using this to build a function that can return more descriptive error messages to the user when a formula returns "#VALUE!" - at least when the formula involves code in my add-in.

Aha. A workaround is to use SetFormula which forces a re-evaluation of the formula even when the new formula is identical to the old one. Please, don't add a check for this to optimize performance of SetFormula() :-).

Note that the code below only works when the offending function is implemented in Basic. A formula of say "= 3 / 0" won't raise an exception and be caught by the FormulaError handler.

Cheers
-- Jan


 Dim SelectedCell as Variant
 SelectedCell = ThisComponent.GetCurrentSelection

if not (SelectedCell.Type = com.sun.star.table.CellContentType.FORMULA) then
   MsgBox "Not a formula"
   Exit Sub
 end if

 Dim FormulaString as String
 FormulaString = SelectedCell.Formula
 ' Force re-calculation of formula.
 On Error GoTo FormulaError
 SelectedCell.SetFormula (FormulaString)

 On Error GoTo 0
 Exit Sub

GeneralError:
 MsgBox Error$, MB_ICONSTOP
 On Error GoTo 0
 Exit Sub

FormulaError:
MsgBox "The following error occurred during formula evaluation: " & Error$, MB_ICONEXCLAMATION
 On Error GoTo 0
 Exit Sub


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to