Jump to content

Crea nuovo intervallo con nome

From The Document Foundation Wiki
This page is a translated version of the page Macros/Calc/ba019 and the translation is 100% complete.


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

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