Contenuto
Indice 🔎︎

# Utilizzo delle funzioni di Calc nelle macro

In aggiunta alle funzioni native di BASIC, potete richiamare le funzione di Calc nelle macro e negli script e impostarle nelle formule delle celle.

## Richiamare funzioni interne di Calc in Basic

Usate la funzione CreateUNOService per accedere al servizio com.sun.star.sheet.FunctionAccess.

### Esempio:

L'esempio seguente crea una funzione denominata MyVlook che richiama la funzione VLOOKUP (CERCA.VERT) di Calc su di una matrice di dati passata come argomento e restituisce il valore trovato dalla funzione.

        Function MyVlook(Lookup, DataArray As Object, Index As Integer, SortedRangeLookup as Byte)
            Dim oService As Object
            Set oService = createUnoService("com.sun.star.sheet.FunctionAccess")
            ' Usate sempre i nomi delle funzioni in inglese
            MyVlook = oService.callFunction("VLOOKUP", Array(Lookup, DataArray, Index, SortedRangeLookup))
        End Function

La macro seguente presenta un esempio di come è possibile richiamare la funzione MyVlook. Prima viene creata una matrice di dati di 5 per 2, poi viene richiamata la funzione MyVlook e visualizzato il valore restituito usando un MsgBox.

        Sub CallingMyVlook()
            ' Crea una matrice di 5 per 2 e la riempie di dati
            Dim myData(1 to 5, 1 to 2) as Variant
            myData(1, 1) = 1 : myData(1, 2) = "Totalmente in disaccordo"
            myData(2, 1) = 3 : myData(2, 2) = "In disaccordo"
            myData(3, 1) = 5 : myData(3, 2) = "Indeciso"
            myData(4, 1) = 7 : myData(4, 2) = "D'accordo"
            myData(5, 1) = 9 : myData(5, 2) = "Totalmente d'accordo"
            ' Ricerca la matrice di dati
            Dim result as String
            result = MyVlook(4, myData, 2, 1)
            ' Visualizza il messaggio "In disaccordo"
            MsgBox result
        End Sub

## Impostare le formule delle celle che contengono funzioni interne di Calc

Usate una stringa con il testo della formula per aggiungerla a una cella del foglio di calcolo.

Tutte le funzioni di Calc devono essere espresse con il loro nome in inglese.

### Esempio:

    Sub AssignFormulaToCell
    REM Aggiunge una formula alla cella A1. Il nome della funzione deve essere in inglese.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=SUM(B1:B10)"
    REM La cella A1 visualizza il nome localizzato della funzione
    End Sub

## Richiamare funzioni aggiuntive (Add-in) di Calc in BASIC

Le funzioni aggiuntive di Calc si trovano nei servizi UNO com.sun.star.sheet.addin.Analysis, com.sun.star.sheet.addin.DateFunctions e com.sun.star.sheet.addin.PricingFunctions.

### Esempio:

    REM Esempio di chiamata alla funzione aggiuntiva 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

## Impostare le formule delle celle usando funzioni aggiuntive

La funzione aggiuntiva deve essere espressa con il nome del suo servizio UNO.

### Esempio:

    Sub AssignAddInFormulaToCell
    REM Inserisce una formula aggiuntiva nella cella A1. Il nome della funzione è quello del servizio UNO.
        oCell = ThisComponent.Sheets.getByIndex(0).getCellRangeByName("A1")
        oCell.Formula = "=com.sun.star.sheet.addin.Analysis.getBin2Dec(B1)"
    REM La cella A1 visualizza il nome localizzato della funzione
    End Sub

## Nomi dei servizi UNO per le funzioni aggiuntive di analisi

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive per le analisi di Calc con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc | Nome del servizio UNO
--- | ---
INT.MATURATO.PER | com.sun.star.sheet.addin.Analysis.getAccrint
INT.MATURATO.SCAD | com.sun.star.sheet.addin.Analysis.getAccrintm
AMMORT.DEGR | com.sun.star.sheet.addin.Analysis.getAmordegrc
AMMORT.PER | com.sun.star.sheet.addin.Analysis.getAmorlinc
BESSEL.I | com.sun.star.sheet.addin.Analysis.getBesseli
BESSEL.J | com.sun.star.sheet.addin.Analysis.getBesselj
BESSEL.K | com.sun.star.sheet.addin.Analysis.getBesselk
BESSEL.Y | com.sun.star.sheet.addin.Analysis.getBessely
BINARIO.DECIMALE | com.sun.star.sheet.addin.Analysis.getBin2Dec
BINARIO.HEX | com.sun.star.sheet.addin.Analysis.getBin2Hex
BINARIO.OCT | com.sun.star.sheet.addin.Analysis.getBin2Oct
COMPLESSO | com.sun.star.sheet.addin.Analysis.getComplex
CONVERTI | com.sun.star.sheet.addin.Analysis.getConvert
GIORNI.CED.INIZ.LIQ | com.sun.star.sheet.addin.Analysis.getCoupdaybs
GIORNI.CED | com.sun.star.sheet.addin.Analysis.getCoupdays
GIORNI.CED.NUOVA | com.sun.star.sheet.addin.Analysis.getCoupdaysnc
DATA.CED.SUCC | com.sun.star.sheet.addin.Analysis.getCoupncd
NUM.CEDOLA | com.sun.star.sheet.addin.Analysis.getCoupnum
DATA.CED.PREC | com.sun.star.sheet.addin.Analysis.getCouppcd
INT.CUMUL | com.sun.star.sheet.addin.Analysis.getCumipmt
CAP.CUM | com.sun.star.sheet.addin.Analysis.getCumprinc
DECIMALE.BINARIO | com.sun.star.sheet.addin.Analysis.getDec2Bin
DECIMALE.HEX | com.sun.star.sheet.addin.Analysis.getDec2Hex
DECIMALE.OCT | com.sun.star.sheet.addin.Analysis.getDec2Oct
DELTA | com.sun.star.sheet.addin.Analysis.getDelta
TASSO.SCONTO | com.sun.star.sheet.addin.Analysis.getDisc
VALUTA.DEC | com.sun.star.sheet.addin.Analysis.getDollarde
VALUTA.FRAZ | com.sun.star.sheet.addin.Analysis.getDollarfr
DURATA | com.sun.star.sheet.addin.Analysis.getDuration
DATA.MESE | com.sun.star.sheet.addin.Analysis.getEdate
INT.EFFETTIVO | com.sun.star.sheet.addin.Analysis.getEffect
FINE.MESE | com.sun.star.sheet.addin.Analysis.getEomonth
FUNZ.ERRORE | com.sun.star.sheet.addin.Analysis.getErf
FUNZIONE.ERRORE.COMP | com.sun.star.sheet.addin.Analysis.getErfc
FATT.DOPPIO | com.sun.star.sheet.addin.Analysis.getFactdouble
VAL.FUT.CAPITALE | com.sun.star.sheet.addin.Analysis.getFvschedule
MCD | com.sun.star.sheet.addin.Analysis.getGcd
SOGLIA | com.sun.star.sheet.addin.Analysis.getGestep
HEX.BINARIO | com.sun.star.sheet.addin.Analysis.getHex2Bin
HEX.DECIMALE | com.sun.star.sheet.addin.Analysis.getHex2Dec
HEX.OCT | com.sun.star.sheet.addin.Analysis.getHex2Oct
COMP.MODULO | com.sun.star.sheet.addin.Analysis.getImabs
COMP.IMMAGINARIO | com.sun.star.sheet.addin.Analysis.getImaginary
COMP.ARGOMENTO | com.sun.star.sheet.addin.Analysis.getImargument
COMP.CONIUGATO | com.sun.star.sheet.addin.Analysis.getImconjugate
COMP.COS | com.sun.star.sheet.addin.Analysis.getImcos
COMP.COSH | com.sun.star.sheet.addin.Analysis.getImcosh
COMP.COT | com.sun.star.sheet.addin.Analysis.getImcot
COMP.COSEC | com.sun.star.sheet.addin.Analysis.getImcsc
COMP.COSECH | com.sun.star.sheet.addin.Analysis.getImcsch
COMP.DIV | com.sun.star.sheet.addin.Analysis.getImdiv
COMP.EXP | com.sun.star.sheet.addin.Analysis.getImexp
COMP.LN | com.sun.star.sheet.addin.Analysis.getImln
COMP.LOG10 | com.sun.star.sheet.addin.Analysis.getImlog10
COMP.LOG2 | com.sun.star.sheet.addin.Analysis.getImlog2
COMP.POTENZA | com.sun.star.sheet.addin.Analysis.getImpower
COMP.PRODOTTO | com.sun.star.sheet.addin.Analysis.getImproduct
COMP.PARTE.REALE | com.sun.star.sheet.addin.Analysis.getImreal
COMP.SEC | com.sun.star.sheet.addin.Analysis.getImsec
COMP.SECH | com.sun.star.sheet.addin.Analysis.getImsech
COMP.SEN | com.sun.star.sheet.addin.Analysis.getImsin
COMP.SENH | com.sun.star.sheet.addin.Analysis.getImsinh
COMP.RADQ | com.sun.star.sheet.addin.Analysis.getImsqrt
COMP.DIFF | com.sun.star.sheet.addin.Analysis.getImsub
COMP.SOMMA | com.sun.star.sheet.addin.Analysis.getImsum
COMP.TAN | com.sun.star.sheet.addin.Analysis.getImtan
TASSO.INT | com.sun.star.sheet.addin.Analysis.getIntrate
VAL.PARI | com.sun.star.sheet.addin.Analysis.getIseven
VAL.DISPARI | com.sun.star.sheet.addin.Analysis.getIsodd
MCM | com.sun.star.sheet.addin.Analysis.getLcm
DURATA.M | com.sun.star.sheet.addin.Analysis.getMduration
ARROTONDA.MULTIPLO | com.sun.star.sheet.addin.Analysis.getMround
MULTINOMIALE | com.sun.star.sheet.addin.Analysis.getMultinomial
GIORNI.LAVORATIVI.TOT | com.sun.star.sheet.addin.Analysis.getNetworkdays
NOMINALE | com.sun.star.sheet.addin.Analysis.getNominal
OCT.BINARIO | com.sun.star.sheet.addin.Analysis.getOct2Bin
OCT.DECIMALE | com.sun.star.sheet.addin.Analysis.getOct2Dec
OCT.HEX | com.sun.star.sheet.addin.Analysis.getOct2Hex
PREZZO.PRIMO.IRR | com.sun.star.sheet.addin.Analysis.getOddfprice
REND.PRIMO.IRR | com.sun.star.sheet.addin.Analysis.getOddfyield
PREZZO.ULTIMO.IRR | com.sun.star.sheet.addin.Analysis.getOddlprice
REND.ULTIMO.IRR | com.sun.star.sheet.addin.Analysis.getOddlyield
PREZZO | com.sun.star.sheet.addin.Analysis.getPrice
PREZZO.SCONT | com.sun.star.sheet.addin.Analysis.getPricedisc
PREZZO.SCAD | com.sun.star.sheet.addin.Analysis.getPricemat
QUOZIENTE | com.sun.star.sheet.addin.Analysis.getQuotient
CASUALE.TRA | com.sun.star.sheet.addin.Analysis.getRandbetween
RICEV.SCAD | com.sun.star.sheet.addin.Analysis.getReceived
SOMMA.SERIE | com.sun.star.sheet.addin.Analysis.getSeriessum
RADQ.PI.GRECO | com.sun.star.sheet.addin.Analysis.getSqrtpi
BOT.EQUIV | com.sun.star.sheet.addin.Analysis.getTbilleq
BOT.PREZZO | com.sun.star.sheet.addin.Analysis.getTbillprice
BOT.REND | com.sun.star.sheet.addin.Analysis.getTbillyield
NUM.SETTIMANA | com.sun.star.sheet.addin.Analysis.getWeeknum
GIORNO.LAVORATIVO | com.sun.star.sheet.addin.Analysis.getWorkday
TIR.X | com.sun.star.sheet.addin.Analysis.getXirr
VAN.X | com.sun.star.sheet.addin.Analysis.getXnpv
FRAZIONE.ANNO | com.sun.star.sheet.addin.Analysis.getYearfrac
REND | com.sun.star.sheet.addin.Analysis.getYield
REND.TITOLI.SCONT | com.sun.star.sheet.addin.Analysis.getYielddisc
REND.SCAD | com.sun.star.sheet.addin.Analysis.getYieldmat

## Nomi dei servizi UNO per le funzioni aggiuntive della data

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive di Calc relative alla data, con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc | Nome del servizio UNO
--- | ---
GIORNI.MESE | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
GIORNI.ANNO | com.sun.star.sheet.addin.DateFunctions.getDaysInMonth
MESI | com.sun.star.sheet.addin.DateFunctions.getDiffMonths
SETTIMANE | com.sun.star.sheet.addin.DateFunctions.getDiffWeeks
ANNI | com.sun.star.sheet.addin.DateFunctions.getDiffYears
ROT13 | com.sun.star.sheet.addin.DateFunctions.getRot13
SETTIMANE.ANNO | com.sun.star.sheet.addin.DateFunctions.getWeeksInYear

## Nomi dei servizi UNO per le funzioni aggiuntive relative ai prezzi

La tabella seguente presenta un elenco di tutte le funzioni aggiuntive di Calc relative ai prezzi, con il nome dei rispettivi servizi UNO.

Nome della funzione di Calc | Nome del servizio UNO
--- | ---
OPZIONE.BARRIERA | com.sun.star.sheet.addin.PrincingFunctions.getOptBarrier
OPZIONE.PROB.HIT | com.sun.star.sheet.addin.PrincingFunctions.getOptProbHit
OPZIONE.PROB.INMONEY | com.sun.star.sheet.addin.PrincingFunctions.getOptProbInMoney
OPZIONE.TOUCH | com.sun.star.sheet.addin.PrincingFunctions.getOptTouch

Argomenti correlati

Funzione CreateUnoService