Crea nuovo intervallo con nome
TDF LibreOffice Blog comunitari Weblate(traduci) Autori 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