Crea nuovo intervallo con nome

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


    Other languages:

    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