Difference between revisions of "Custom functions"

From Apache OpenOffice Wiki
Jump to: navigation, search
(mentioned semicolon instead of comma between arguments)
Line 17: Line 17:
 
End Function
 
End Function
 
</code>
 
</code>
You can put ''=SimpleSum(A1;A2)'' in any cell.  
+
You can put ''=SimpleSum(A1;A2)'' in any cell. <br/>'''Note:''' Unlike normal functions, custom functions with multiple arguments must use a semicolon (;) and not a comma to separate function arguments
  
 
==Cells range as an argument==
 
==Cells range as an argument==

Revision as of 09:57, 6 December 2007

Simple functions

You can write simple functions to make your spreadsheets more readable and easier to maintain. The process of developing and using these functions is very similar to other spreadsheet applications. For an introduction see Extensions development basic. Some examples in OpenOffice.org Basic follow.

Cell as an argument

[oobas] Function Cube( c1 )

   Cube = c1 * c1 * c1

End Function You can put =Cube(A1) in any cell.

More cells as the arguments

[oobas] Function SimpleSum( c1, c2 )

   SimpleSum = c1 + c2

End Function You can put =SimpleSum(A1;A2) in any cell.
Note: Unlike normal functions, custom functions with multiple arguments must use a semicolon (;) and not a comma to separate function arguments

Cells range as an argument

[oobas] Function MySum( oRange As Variant ) If Not IsArray( oRange ) Then

       If IsNumeric( oRange ) Then
               MySum = oRange
       else
               MySum = 0
       End If
       Exit Function

End If

Dim nSum As double

nSum = 0

For i = 1 To ubound( oRange, 1 )

       For j = 1 To ubound( oRange, 2 )

               If IsNumeric( oRange( i, j ) ) Then
                       nSum = nSum + oRange( i, j )            
               End If
       Next j

Next i

MySum = nSum End Function You can put =MySum(A1:A3) in any cell.

It is not possible to write to custom function that uses a cell range that spans sheets. E.g. =Sheet1.A2:Sheet2.A2 instead you would have to have separate parameters for each sheet.

Personal tools