1*cdf0e10cSrcweir<?xml version="1.0" encoding="UTF-8"?>
2*cdf0e10cSrcweir
3*cdf0e10cSrcweir
4*cdf0e10cSrcweir<!--
5*cdf0e10cSrcweir ***********************************************************************
6*cdf0e10cSrcweir *
7*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8*cdf0e10cSrcweir *
9*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates.
10*cdf0e10cSrcweir *
11*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite
12*cdf0e10cSrcweir *
13*cdf0e10cSrcweir * This file is part of OpenOffice.org.
14*cdf0e10cSrcweir *
15*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify
16*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3
17*cdf0e10cSrcweir * only, as published by the Free Software Foundation.
18*cdf0e10cSrcweir *
19*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful,
20*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of
21*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details
23*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code).
24*cdf0e10cSrcweir *
25*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License
26*cdf0e10cSrcweir * version 3 along with OpenOffice.org.  If not, see
27*cdf0e10cSrcweir * <http://www.openoffice.org/license.html>
28*cdf0e10cSrcweir * for a copy of the LGPLv3 License.
29*cdf0e10cSrcweir *
30*cdf0e10cSrcweir ************************************************************************
31*cdf0e10cSrcweir -->
32*cdf0e10cSrcweir
33*cdf0e10cSrcweir<helpdocument version="1.0">
34*cdf0e10cSrcweir<meta>
35*cdf0e10cSrcweir<topic id="textscalcguideuserdefined_functionxml" indexer="include" status="PUBLISH">
36*cdf0e10cSrcweir<title id="tit" xml-lang="en-US">User-Defined Functions</title>
37*cdf0e10cSrcweir<filename>/text/scalc/guide/userdefined_function.xhp</filename>
38*cdf0e10cSrcweir</topic>
39*cdf0e10cSrcweir<history>
40*cdf0e10cSrcweir<created date="2003-10-31T00:00:00">Sun Microsystems, Inc.</created>
41*cdf0e10cSrcweir<lastedited date="2006-02-07T11:28:53">FPE: Deleted Screenshot and cleaned up
42*cdf0e10cSrcweiryj - checked</lastedited>
43*cdf0e10cSrcweir</history>
44*cdf0e10cSrcweir</meta>
45*cdf0e10cSrcweir<body>
46*cdf0e10cSrcweir<bookmark xml-lang="en-US" branch="index" id="bm_id3155411"><bookmark_value>functions; user-defined</bookmark_value>
47*cdf0e10cSrcweir<bookmark_value>user-defined functions</bookmark_value>
48*cdf0e10cSrcweir<bookmark_value>Basic IDE for user-defined functions</bookmark_value>
49*cdf0e10cSrcweir<bookmark_value>IDE; Basic IDE</bookmark_value>
50*cdf0e10cSrcweir<bookmark_value>programming;functions</bookmark_value>
51*cdf0e10cSrcweir</bookmark>
52*cdf0e10cSrcweir<paragraph role="heading" id="hd_id3155411" xml-lang="en-US" level="1" l10n="U" oldref="1"><variable id="userdefined_function"><link href="text/scalc/guide/userdefined_function.xhp" name="Defining Functions Yourself">User-Defined Functions</link>
53*cdf0e10cSrcweir</variable></paragraph>
54*cdf0e10cSrcweir<paragraph role="paragraph" id="par_id3153969" xml-lang="en-US" l10n="U" oldref="2">You can apply user-defined functions in $[officename] Calc in the following ways:</paragraph>
55*cdf0e10cSrcweir<list type="unordered">
56*cdf0e10cSrcweir<listitem>
57*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3145366" xml-lang="en-US" l10n="CHG" oldref="4">You can define your own functions using the Basic-IDE. This method requires a basic knowledge of programming.</paragraph>
58*cdf0e10cSrcweir</listitem>
59*cdf0e10cSrcweir<listitem>
60*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3153768" xml-lang="en-US" l10n="CHG" oldref="3">You can program functions as <link href="text/scalc/01/04060111.xhp" name="add-ins">add-ins</link>. This method requires an advanced knowledge of programming.</paragraph>
61*cdf0e10cSrcweir</listitem>
62*cdf0e10cSrcweir</list>
63*cdf0e10cSrcweir<paragraph role="heading" id="hd_id3149260" xml-lang="en-US" level="2" l10n="CHG" oldref="6">Defining A Function Using %PRODUCTNAME Basic</paragraph>
64*cdf0e10cSrcweir<list type="ordered">
65*cdf0e10cSrcweir<listitem>
66*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3148456" xml-lang="en-US" l10n="CHG" oldref="7">Choose <item type="menuitem">Tools - Macros - Organize Macros - %PRODUCTNAME Basic</item>.</paragraph>
67*cdf0e10cSrcweir</listitem>
68*cdf0e10cSrcweir<listitem>
69*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3154510" xml-lang="en-US" l10n="U" oldref="8">Click the <emph>Edit</emph> button. You will now see the Basic IDE.</paragraph>
70*cdf0e10cSrcweir</listitem>
71*cdf0e10cSrcweir<listitem>
72*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3150327" xml-lang="en-US" l10n="CHG" oldref="9">Enter the function code. In this example, we define a <item type="literal">VOL(a; b; c)</item> function that calculates the volume of a rectangular solid with side lengths <item type="literal">a</item>, <item type="literal">b</item> and <item type="literal">c</item>:</paragraph>
73*cdf0e10cSrcweir<paragraph role="code" id="par_id9797426" xml-lang="en-US" l10n="NEW" localize="false">Function VOL(a, b, c)<br/>VOL = a*b*c<br/>End Function</paragraph>
74*cdf0e10cSrcweir</listitem>
75*cdf0e10cSrcweir<listitem>
76*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3155443" xml-lang="en-US" l10n="U" oldref="10">Close the Basic-IDE window.</paragraph>
77*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3150043" xml-lang="en-US" l10n="CHG" oldref="11">Your function is automatically saved in the default module and is now available. If you apply the function in a Calc document that is to be used on another computer, you can copy the function to the Calc document as described in the next section.</paragraph>
78*cdf0e10cSrcweir</listitem>
79*cdf0e10cSrcweir</list>
80*cdf0e10cSrcweir<paragraph role="heading" id="hd_id3147340" xml-lang="en-US" level="2" l10n="U" oldref="18">Copying a Function To a Document</paragraph>
81*cdf0e10cSrcweir<paragraph role="paragraph" id="par_id3145232" xml-lang="en-US" l10n="CHG" oldref="19">In stage 2 of "Defining A Function Using %PRODUCTNAME Basic", in the <emph>Macro</emph> dialog you clicked on <emph>Edit </emph>. As the default, in the <emph>Macro from</emph> field the <emph>My Macros - Standard - Module1</emph> module is selected. The <emph>Standard</emph> library resides locally in your user directory.</paragraph>
82*cdf0e10cSrcweir<paragraph role="paragraph" id="par_id3154022" xml-lang="en-US" l10n="U" oldref="20">If you want to copy the user-defined function to a Calc document:</paragraph>
83*cdf0e10cSrcweir<list type="ordered">
84*cdf0e10cSrcweir<listitem>
85*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3150304" xml-lang="en-US" l10n="CHG" oldref="21">Choose <item type="menuitem">Tools - Macros - Organize Macros - %PRODUCTNAME Basic</item> .</paragraph>
86*cdf0e10cSrcweir</listitem>
87*cdf0e10cSrcweir<listitem>
88*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3150086" xml-lang="en-US" l10n="CHG" oldref="22">In the <emph>Macro from</emph> field select <emph>My Macros - Standard - Module1</emph> and click <emph>Edit</emph>.</paragraph>
89*cdf0e10cSrcweir</listitem>
90*cdf0e10cSrcweir<listitem>
91*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3166430" xml-lang="en-US" l10n="CHG" oldref="23">In the Basic-IDE, select the source of your user-defined function and copy it to the clipboard.</paragraph>
92*cdf0e10cSrcweir</listitem>
93*cdf0e10cSrcweir<listitem>
94*cdf0e10cSrcweir<paragraph role="listitem" id="par_idN1081D" xml-lang="en-US" l10n="NEW">Close the Basic-IDE.</paragraph>
95*cdf0e10cSrcweir</listitem>
96*cdf0e10cSrcweir<listitem>
97*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3150517" xml-lang="en-US" l10n="CHG" oldref="24">Choose <item type="menuitem">Tools - Macros - Organize Macros - %PRODUCTNAME Basic</item> .</paragraph>
98*cdf0e10cSrcweir</listitem>
99*cdf0e10cSrcweir<listitem>
100*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3145384" xml-lang="en-US" l10n="CHG" oldref="25">In the <emph>Macro from</emph> field select <emph>(Name of the Calc document) - Standard - Module1</emph>. Click <emph>Edit</emph>.</paragraph>
101*cdf0e10cSrcweir</listitem>
102*cdf0e10cSrcweir<listitem>
103*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3148699" xml-lang="en-US" l10n="U" oldref="26">Paste the clipboard contents in the Basic-IDE of the document.</paragraph>
104*cdf0e10cSrcweir</listitem>
105*cdf0e10cSrcweir</list>
106*cdf0e10cSrcweir<paragraph role="heading" id="hd_id3153305" xml-lang="en-US" level="2" l10n="U" oldref="12">Applying a User-defined Function in $[officename] Calc</paragraph>
107*cdf0e10cSrcweir<paragraph role="paragraph" id="par_id3148869" xml-lang="en-US" l10n="CHG" oldref="13">Once you have defined the function <item type="literal">VOL(a; b; c)</item> in the Basic-IDE, you can apply it the same way as the built-in functions of $[officename] Calc.</paragraph>
108*cdf0e10cSrcweir<list type="ordered">
109*cdf0e10cSrcweir<listitem>
110*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3148606" xml-lang="en-US" l10n="CHG" oldref="14">Open a Calc document and enter numbers for the function parameters <item type="literal">a</item>, <item type="literal">b</item>, and <item type="literal">c</item> in cells A1, B1, and C1.</paragraph>
111*cdf0e10cSrcweir</listitem>
112*cdf0e10cSrcweir<listitem>
113*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3156019" xml-lang="en-US" l10n="CHG" oldref="15">Set the cursor in another cell and enter the following:</paragraph>
114*cdf0e10cSrcweir<paragraph role="code" id="par_id3155264" xml-lang="en-US" l10n="U" oldref="16">=VOL(A1;B1;C1)</paragraph>
115*cdf0e10cSrcweir</listitem>
116*cdf0e10cSrcweir<listitem>
117*cdf0e10cSrcweir<paragraph role="listitem" id="par_id3146776" xml-lang="en-US" l10n="CHG" oldref="17">The function is evaluated and you will see the result in the selected cell.</paragraph>
118*cdf0e10cSrcweir</listitem>
119*cdf0e10cSrcweir</list>
120*cdf0e10cSrcweir<section id="relatedtopics">
121*cdf0e10cSrcweir<embed href="text/scalc/guide/calculate.xhp#calculate"/>
122*cdf0e10cSrcweir<embed href="text/scalc/guide/formula_enter.xhp#formula_enter"/>
123*cdf0e10cSrcweir</section>
124*cdf0e10cSrcweir</body>
125*cdf0e10cSrcweir</helpdocument>
126