Using Calc Functions in Macros

In addition to the native BASIC functions, you can call Calc functions in your macros and scripts and set Calc functions in cell formulas.

Calling Internal Calc functions in Basic

Use the CreateUnoService function to access the com.sun.star.sheet.FunctionAccess service.

Example:

The example below creates a function named MyVlook that calls the VLOOKUP Calc function over a data array passed as argument and returns the value found by the function.


    Function MyVlook(Lookup, DataArray As Object, Index As Integer, SortedRangeLookup as Byte)
        Dim oService As Object
        Set oService = CreateUnoService("com.sun.star.sheet.FunctionAccess")
        ' Always use the function name in English
        MyVlook = oService.callFunction("VLOOKUP", Array(Lookup, DataArray, Index, SortedRangeLookup))
    End Function
  

The macro below presents an example of how the MyVlook function can be called. It first creates a 5-by-2 data array and then calls the function MyVlook and shows the returned value using MsgBox.


    Sub CallingMyVlook()
        ' Creates a 5 by 2 array and fills it with data
        Dim myData(1 to 5, 1 to 2) as Variant
        myData(1, 1) = 1 : myData(1, 2) = "Strongly disagree"
        myData(2, 1) = 3 : myData(2, 2) = "Disagree"
        myData(3, 1) = 5 : myData(3, 2) = "Undecided"
        myData(4, 1) = 7 : myData(4, 2) = "Agree"
        myData(5, 1) = 9 : myData(5, 2) = "Strongly agree"
        ' Looks up the data array
        Dim result as String
        result = MyVlook(4, myData, 2, 1)
        ' Shows the message "Disagree"
        MsgBox result
    End Sub
  

Setting Cell Formulas Containing Internal Calc Functions

Use the formula text string to add a formula to a spreadsheet cell.

note

All Calc functions must be expressed with their English names.


Example:


Sub AssignFormulaToCell
REM Add a formula to cell A1. Function name must be in English.
    oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
    oCell.Formula = "=SUM(B1:B10)"
REM Cell A1 displays the localized function name
End Sub

Calling Add-In Calc Functions in BASIC

The Calc Add-In functions are in the UNO services com.sun.star.sheet.addin.Analysis, com.sun.star.sheet.addin.DateFunctions and com.sun.star.sheet.addin.PricingFunctions.

Example:


REM Example calling Add-in function SQRTPI
Function MySQRTPI(arg as double) as double
   Dim oService as Object
   oService = CreateUnoService("com.sun.star.sheet.addin.Analysis")
   MySQRTPI = oService.getSqrtPi(arg)
End Function

Setting Cell Formulas with Add-In Functions

The Add-In function must be expressed by its UNO service name.

Example:


Sub AssignAddInFormulaToCell
REM Add an Add-In formula to cell A1. Function name is the UNO service name.
    oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
    oCell.Formula = "=com.sun.star.sheet.addin.Analysis.getBin2Dec(B1)"
REM Cell A1 displays the localized function name
End Sub

UNO Service Names for Analysis Add-In Functions

The table below presents a list of all Calc Analysis Add-In functions and their respective UNO service names.

Calc Function name

UNO service name

ALDINT

com.sun.star.sheet.addin.Analysis.getAccrint

ALDINTM

com.sun.star.sheet.addin.Analysis.getAccrintm

AMORDEGRC

com.sun.star.sheet.addin.Analysis.getAmordegrc

AMORLINC

com.sun.star.sheet.addin.Analysis.getAmorlinc

BESELI

com.sun.star.sheet.addin.Analysis.getBesseli

BESELJ

com.sun.star.sheet.addin.Analysis.getBesselj

BESELK

com.sun.star.sheet.addin.Analysis.getBesselk

BESELY

com.sun.star.sheet.addin.Analysis.getBessely

BAZ2AL10

com.sun.star.sheet.addin.Analysis.getBin2Dec

BAZ2AL16

com.sun.star.sheet.addin.Analysis.getBin2Hex

BAZ2AL8

com.sun.star.sheet.addin.Analysis.getBin2Oct

KOMPLEKSA

com.sun.star.sheet.addin.Analysis.getComplex

KONVERTI

com.sun.star.sheet.addin.Analysis.getConvert

KUPTAGKF

com.sun.star.sheet.addin.Analysis.getCoupdaybs

KUPTAGF

com.sun.star.sheet.addin.Analysis.getCoupdays

KUPFSK

com.sun.star.sheet.addin.Analysis.getCoupdaysnc

KUPSKD

com.sun.star.sheet.addin.Analysis.getCoupncd

KUPNOMBR

com.sun.star.sheet.addin.Analysis.getCoupnum

KUPAKD

com.sun.star.sheet.addin.Analysis.getCouppcd

AKUM.INTEREZO

com.sun.star.sheet.addin.Analysis.getCumipmt

AKUM.ĈEFA

com.sun.star.sheet.addin.Analysis.getCumprinc

BAZ10AL2

com.sun.star.sheet.addin.Analysis.getDec2Bin

BAZ10AL16

com.sun.star.sheet.addin.Analysis.getDec2Hex

BAZ10AL8

com.sun.star.sheet.addin.Analysis.getDec2Oct

DELTA

com.sun.star.sheet.addin.Analysis.getDelta

RABAT

com.sun.star.sheet.addin.Analysis.getDisc

DOLARDE

com.sun.star.sheet.addin.Analysis.getDollarde

DOLARFR

com.sun.star.sheet.addin.Analysis.getDollarfr

DAŬRO

com.sun.star.sheet.addin.Analysis.getDuration

FINDAT

com.sun.star.sheet.addin.Analysis.getEdate

EFEKTO

com.sun.star.sheet.addin.Analysis.getEffect

MONFIN

com.sun.star.sheet.addin.Analysis.getEomonth

ERF

com.sun.star.sheet.addin.Analysis.getErf

ERFK

com.sun.star.sheet.addin.Analysis.getErfc

FAKTDUOBL

com.sun.star.sheet.addin.Analysis.getFactdouble

VFPLAN

com.sun.star.sheet.addin.Analysis.getFvschedule

PGKD

com.sun.star.sheet.addin.Analysis.getGcd

GESALT

com.sun.star.sheet.addin.Analysis.getGestep

BAZ16AL2

com.sun.star.sheet.addin.Analysis.getHex2Bin

BAZ16AL10

com.sun.star.sheet.addin.Analysis.getHex2Dec

BAZ16AL8

com.sun.star.sheet.addin.Analysis.getHex2Oct

IMABS

com.sun.star.sheet.addin.Analysis.getImabs

IMAGINARA

com.sun.star.sheet.addin.Analysis.getImaginary

IMARGUMENTO

com.sun.star.sheet.addin.Analysis.getImargument

IMKONJUG

com.sun.star.sheet.addin.Analysis.getImconjugate

IMKOS

com.sun.star.sheet.addin.Analysis.getImcos

IMKOSH

com.sun.star.sheet.addin.Analysis.getImcosh

IMKOT

com.sun.star.sheet.addin.Analysis.getImcot

IMKSK

com.sun.star.sheet.addin.Analysis.getImcsc

IMKSKH

com.sun.star.sheet.addin.Analysis.getImcsch

IMDIV

com.sun.star.sheet.addin.Analysis.getImdiv

IMEXP

com.sun.star.sheet.addin.Analysis.getImexp

IMLN

com.sun.star.sheet.addin.Analysis.getImln

IMLOG10

com.sun.star.sheet.addin.Analysis.getImlog10

IMLOG2

com.sun.star.sheet.addin.Analysis.getImlog2

IMPOT

com.sun.star.sheet.addin.Analysis.getImpower

IMPRODUTO

com.sun.star.sheet.addin.Analysis.getImproduct

IMREEL

com.sun.star.sheet.addin.Analysis.getImreal

IMSEK

com.sun.star.sheet.addin.Analysis.getImsec

IMSEKH

com.sun.star.sheet.addin.Analysis.getImsech

IMSIN

com.sun.star.sheet.addin.Analysis.getImsin

IMSINH

com.sun.star.sheet.addin.Analysis.getImsinh

IMRAD

com.sun.star.sheet.addin.Analysis.getImsqrt

IMSUB

com.sun.star.sheet.addin.Analysis.getImsub

IMSUM

com.sun.star.sheet.addin.Analysis.getImsum

IMTAN

com.sun.star.sheet.addin.Analysis.getImtan

INTPROC

com.sun.star.sheet.addin.Analysis.getIntrate

ESTASPARA

com.sun.star.sheet.addin.Analysis.getIseven

ESTASNEPARA

com.sun.star.sheet.addin.Analysis.getIsodd

PMKO

com.sun.star.sheet.addin.Analysis.getLcm

MDAŬR

com.sun.star.sheet.addin.Analysis.getMduration

MRONDIGI

com.sun.star.sheet.addin.Analysis.getMround

MULTNOMIAL

com.sun.star.sheet.addin.Analysis.getMultinomial

NETLABORTAG

com.sun.star.sheet.addin.Analysis.getNetworkdays

NOMINAL

com.sun.star.sheet.addin.Analysis.getNominal

BAZ8AL2

com.sun.star.sheet.addin.Analysis.getOct2Bin

BAZ8AL10

com.sun.star.sheet.addin.Analysis.getOct2Dec

BAZ8AL16

com.sun.star.sheet.addin.Analysis.getOct2Hex

NEPAR1PREZ

com.sun.star.sheet.addin.Analysis.getOddfprice

NEPAR1REND

com.sun.star.sheet.addin.Analysis.getOddfyield

NEPARLPREZ

com.sun.star.sheet.addin.Analysis.getOddlprice

NEPARLREND

com.sun.star.sheet.addin.Analysis.getOddlyield

PREZO

com.sun.star.sheet.addin.Analysis.getPrice

PREZRABAT

com.sun.star.sheet.addin.Analysis.getPricedisc

PREZMAT

com.sun.star.sheet.addin.Analysis.getPricemat

KVOCIENT

com.sun.star.sheet.addin.Analysis.getQuotient

HAZARDINTER

com.sun.star.sheet.addin.Analysis.getRandbetween

RICEVITA

com.sun.star.sheet.addin.Analysis.getReceived

SERISUM

com.sun.star.sheet.addin.Analysis.getSeriessum

KVRADPI

com.sun.star.sheet.addin.Analysis.getSqrtpi

TLETEREKV

com.sun.star.sheet.addin.Analysis.getTbilleq

TLETERPREZ

com.sun.star.sheet.addin.Analysis.getTbillprice

FLETERREND

com.sun.star.sheet.addin.Analysis.getTbillyield

NRO.SEMAJNO

com.sun.star.sheet.addin.Analysis.getWeeknum

LABORTAGO

com.sun.star.sheet.addin.Analysis.getWorkday

XIPR

com.sun.star.sheet.addin.Analysis.getXirr

XNNV

com.sun.star.sheet.addin.Analysis.getXnpv

JARFRAKCI

com.sun.star.sheet.addin.Analysis.getYearfrac

RENDIMENTO

com.sun.star.sheet.addin.Analysis.getYield

RENDRABAT

com.sun.star.sheet.addin.Analysis.getYielddisc

RENDMAT

com.sun.star.sheet.addin.Analysis.getYieldmat


UNO Service Names for Date Add-In Functions

The table below presents a list of all Calc Date Add-In functions and their respective UNO service names.

Calc Function name

UNO service name

TAGOJENMONATO

com.sun.star.sheet.addin.DateFunctions.getDaysInMonth

TAGOJENJARO

com.sun.star.sheet.addin.DateFunctions.getDaysInMonth

MONATOJ

com.sun.star.sheet.addin.DateFunctions.getDiffMonths

SEMAJNOJ

com.sun.star.sheet.addin.DateFunctions.getDiffWeeks

JAROJ

com.sun.star.sheet.addin.DateFunctions.getDiffYears

ROT13

com.sun.star.sheet.addin.DateFunctions.getRot13

SEMAJNOENJARO

com.sun.star.sheet.addin.DateFunctions.getWeeksInYear


UNO Service Names for Pricing Add-In Functions

The table below presents a list of all Calc Pricing Add-In functions and their respective UNO service names.

Calc Function name

UNO service name

OPCIO_BARIERA

com.sun.star.sheet.addin.PrincingFunctions.getOptBarrier

OPCIO_PROB_TRAF

com.sun.star.sheet.addin.PrincingFunctions.getOptProbHit

OPCIO_PROB_ENMONA

com.sun.star.sheet.addin.PrincingFunctions.getOptProbInMoney

OPCIO_TUŜA

com.sun.star.sheet.addin.PrincingFunctions.getOptTouch


Bonvolu subteni nin!