Crea nuovo intervallo con nome
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Riepilogo
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.
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
Sub AddNamedRange()
Dim oRange ' La gamma creata.
Dim oRanges ' Tutti gli intervalli denominati.
Dim sName$ ' Nome dell'intervallo denominato da creare.
Dim oCell ' Oggetto cella.
Dim s$
sName$ = "MyNRange"
oRanges = ThisComponent.NamedRanges
If NOT oRanges.hasByName(sName$) Then
REM Impostazione dell'indirizzo di base per i relativi riferimenti di cella
Dim oCellAddress As new com.sun.star.table.CellAddress
oCellAddress.Sheet = 0 'Il primo foglio.
oCellAddress.Column = 1 'Colonna B.
oCellAddress.Row = 2 'Riga 3.
REM Il primo argomento è il nome dell'intervallo.
REM Il secondo argomento è una stringa che definisce la formula
REM o l'espressione da utilizzare.
REM Il terzo argomento specifica l'indirizzo di base per
REM relativi riferimenti di cella.
REM Il quarto argomento è un insieme di selezioni che definiscono
REM come viene utilizzato l'intervallo, ma la maggior parte degli intervalli utilizza 0.
REM Il quarto argomento usa i valori di
REM costanti NamedRangeFlag.
s$ = "$Sheet1.$B$3:$D$6"
oRanges.addNewByName(sName$, s$, oCellAddress, 0)
End If
REM Si ottiene l'intervallo denominato creato.
oRange = ThisComponent.NamedRanges.getByName(sName$)
REM Stampa la stringa contenuta nella cella $Foglio1.$B$3
oCell = oRange.getReferredCells().getCellByPosition(0,0)
Print oCell.getString()
End Sub
Questo foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice