Difference between revisions of "Custom functions"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Reverting because I appear to be a fool who does not know how the program works. Please ignore my silly edit.)
Line 4: Line 4:
  
 
==Cell as an argument==
 
==Cell as an argument==
<code>[oobas]
+
<source lang="oobas">
 
Function Cube( c1 )
 
Function Cube( c1 )
 
     Cube = c1 * c1 * c1
 
     Cube = c1 * c1 * c1
 
End Function
 
End Function
</code>
+
</source>
 
You can put ''=Cube(A1)'' in any cell.  
 
You can put ''=Cube(A1)'' in any cell.  
  
 
==More cells as the arguments==
 
==More cells as the arguments==
<code>[oobas]
+
<source lang="oobas">
 
Function SimpleSum( c1, c2 )
 
Function SimpleSum( c1, c2 )
 
     SimpleSum = c1 + c2
 
     SimpleSum = c1 + c2
 
End Function
 
End Function
</code>
+
</source>
 
You can put ''=SimpleSum(A1;A2)'' in any cell.  
 
You can put ''=SimpleSum(A1;A2)'' in any cell.  
  
 
==Cells range as an argument==
 
==Cells range as an argument==
<code>[oobas]
+
<source lang="oobas">
 
Function MySum( oRange As Variant )
 
Function MySum( oRange As Variant )
 
If Not IsArray( oRange ) Then
 
If Not IsArray( oRange ) Then
Line 46: Line 46:
 
MySum = nSum
 
MySum = nSum
 
End Function
 
End Function
</code>
+
</source>
 
You can put ''=MySum(A1:A3)'' in any cell.  
 
You can put ''=MySum(A1:A3)'' in any cell.  
  

Revision as of 17:46, 10 July 2008

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

Function Cube( c1 )
    Cube = c1 * c1 * c1
End Function

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

More cells as the arguments

Function SimpleSum( c1, c2 )
    SimpleSum = c1 + c2
End Function

You can put =SimpleSum(A1;A2) in any cell.

Cells range as an argument

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