Crea nuovo intervallo con nome

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to navigation Jump to search
This page is a translated version of the page Macros/Calc/ba019 and the translation is 100% complete.
Other languages:
English • ‎italiano

Questa pagina fornisce una procedura macro di LibreOffice Basic che crea un nuovo intervallo denominato che fa riferimento a $Foglio1.$B$3:$D$6. È un esempio tratto dal Capitolo 13 ("Calc come un Database") della Guida 7.0 Calc.

Descrizione

In una macro, si accede, si crea e si elimina un intervallo denominato utilizzando il servizio NamedRanges di un documento Calc. A questo servizio sono associati numerosi metodi, i seguenti sono particolarmente utili per la creazione di intervalli denominati:

getByName(Nome)
Restituisce l'intervallo o l'espressione con il nome specificato.
getElementNames()
Restituisce un array di tutti gli intervalli denominati nel documento corrente.
hasByName(Nome)
Restituisce un booleano: VERO se un intervallo con questo nome è nel documento corrente e FALSO in caso contrario.
addNewByName(Nome, contenuto, posizione, tipo)
Aggiunge un nuovo intervallo denominato al documento corrente. Questo metodo ha quattro argomenti:
  • Nome – Una stringa che contiene il nome del nuovo intervallo.
  • Contenuto – Una stringa che contiene l'indirizzo dell'intervallo o l'espressione della formula da nominare.
  • Posizione – L'indirizzo di base per i relativi riferimenti di cella.
  • Tipo – Una combinazione di flag che specificano il tipo di intervallo denominato definito. Questi flag sono elencati nella tabella seguente. Il valore predefinito di questo parametro è zero per qualsiasi intervallo denominato comune.
com.sun.star.sheet.NamedRangeFlag riferimento di gruppo costante
Valore Nome Descrizione
1 FILTER_CRITERIA L'intervallo contiene criteri di filtro.
2 PRINT_AREA L'intervallo può essere utilizzato come intervallo di stampa.
4 COLUMN_HEADER L'intervallo può essere utilizzato come intestazioni di colonna per la stampa.
8 ROW_HEADER L'intervallo può essere utilizzato come intestazioni di riga per la stampa.

Ad esempio, il codice seguente utilizza i metodi precedenti per verificare se esiste un intervallo denominato MyNRange. Se non esiste, la macro crea un intervallo con il nome e lo imposta per accedere all'intervallo di celle B3:D6.

Codice

 1Sub AddNamedRange()
 2  Dim oRange     ' La gamma creata.
 3  Dim oRanges    ' Tutti gli intervalli denominati.
 4  Dim sName$     ' Nome dell'intervallo denominato da creare.
 5  Dim oCell      ' Oggetto cella.
 6  Dim s$
 7
 8  sName$ = "MyNRange"
 9  oRanges = ThisComponent.NamedRanges
10  If NOT oRanges.hasByName(sName$) Then
11    REM Impostazione dell'indirizzo di base per i relativi riferimenti di cella
12    Dim oCellAddress As new com.sun.star.table.CellAddress
13    oCellAddress.Sheet = 0     'Il primo foglio.
14    oCellAddress.Column = 1    'Colonna B.
15    oCellAddress.Row = 2       'Riga 3.
16
17    REM Il primo argomento è il nome dell'intervallo.
18    REM Il secondo argomento è una stringa che definisce la formula
19    REM o l'espressione da utilizzare.
20    REM Il terzo argomento specifica l'indirizzo di base per
21    REM relativi riferimenti di cella.
22    REM Il quarto argomento è un insieme di selezioni che definiscono
23    REM come viene utilizzato l'intervallo, ma la maggior parte degli intervalli utilizza 0.
24    REM Il quarto argomento usa i valori di
25    REM costanti NamedRangeFlag.
26    s$ = "$Sheet1.$B$3:$D$6"
27    oRanges.addNewByName(sName$, s$, oCellAddress, 0)
28  End If
29  REM Si ottiene l'intervallo denominato creato.
30  oRange = ThisComponent.NamedRanges.getByName(sName$)
31
32  REM Stampa la stringa contenuta nella cella $Foglio1.$B$3
33  oCell = oRange.getReferredCells().getCellByPosition(0,0)
34  Print oCell.getString()
35End Sub

Questo foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice