Einen neuen benannten Bereich erstellen

    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:

    Zusammenfassung

    Diese Seite zeigt ein LibreOffice Basic Makro, das einen neuen benannten Bereich mit der Referenz $Tabelle1.$B$3:$D$6 erzeugt. Es ist ein Beispiel aus Kapitel 13 ("Calc als Datenbank") aus dem Handbuch zu Calc 7.0.

    Beschreibung

    In einem Makro wird ein benannter Bereich angesprochen, erzeugt und gelöscht mit der Funktion Benannter Bereich eines Calc Dokumentes. Diese Funktion hat eine Anzahl an Methoden, die folgenden davon werden gebraucht, einen benannten Bereich zu erzeugen:

    getByName(Name)
    Gibt den Bereich oder den Ausdruck mit dem angegebenen Namen zurück.
    getElementNames()
    Gibt ein Feld mit allen benannten Bereichen im aktuellen Dokument zurück.
    hasByName(Name)
    Gibt einen boolschen Wert zurück: WAHR, wenn ein Bereich mit diesem Namen im aktuellen Dokument ist, ansonsten FALSCH.
    addNewByName(Name, Inhalt, Position, Typ)
    Fügt einen neuen benannten Bereich dem aktuellen Dokument hinzu. Diese Methode hat vier Argumente:
    • Name - Ein Text, der den Namen des neuen Bereiches enthält.
    • Inhalt - Ein Text der die Addresse des Bereiches oder die Formel, die den Namen zum Ausdruck bringt.
    • Position - Die Basis Adresse für den relativen Zellbezug.
    • Typ - Eine Kombination von Flags, die den Typ des benannten Bereiches definiert. Diese Flags werden in der folgende Tabelle aufgelistet. Der Standardwert für irgendeinen üblichen Namen ist Null.
    com.sun.star.sheet.NamedRangeFlag konstanter Gruppenbezug
    Wert Name Beschreibung
    1 FILTER_CRITERIA Der Bereich enthält die Filterkriterien.
    2 PRINT_AREA Der Bereich kann als Druckbereich verwendet werden.
    4 COLUMN_HEADER Der Bereich kann als Spaltenköpfe für den Druck verwendet werden.
    8 ROW_HEADER Der Bereich kann als Zeilenköpfe für den Druck verwendet werden.

    Als Beispiel verwendet der folgende Code die obigen Methoden, ob ein Bereich namens MyNRange existiert. Falls er nicht existiert, dann erstellt das Makro einen Bereich mit dem Namen und setzt ihn auf den Zellbereich B3:D6.

    Code

    Sub AddNamedRange()
      Dim oRange     ' Der erzeugte Bereich
      Dim oRanges    ' Alle benannten Bereiche
      Dim sName$     ' Name des zu erzeugenden benannten Bereiches.
      Dim oCell      ' Zellobjekt
      Dim s$
    
      sName$ = "MyNRange"
      oRanges = ThisComponent.NamedRanges
      If NOT oRanges.hasByName(sName$) Then
        REM Setzen der Basis Adresse für den relativen Zellbezug
        Dim oCellAddress As new com.sun.star.table.CellAddress
        oCellAddress.Sheet = 0     'Das erste Tabellenblatt
        oCellAddress.Column = 1    'Spalte B
        oCellAddress.Row = 2       'Zeile 3
    
        REM Das erste Argument ist der Bereichsname.
        REM Das zweite Argument ist ein Text, der die Formel
        REM oder den zu verwendeten Ausdruck definiert.
        REM Das dritte Argument gibt die Basis Adresse für
        REM den relativen Zellbezug an.
        REM Das vierte Argument ist ein Set aus Flags die definieren,
        REM wie der Bereich genutzt wird; die meisten Bereiche nutzen 0.
        REM Das vierte Argument nutzt Werte aus den
        REM NamedRangeFlag Konstanten.
        s$ = "$Sheet1.$B$3:$D$6"
        oRanges.addNewByName(sName$, s$, oCellAddress, 0)
      End If
      REM Hole den erzeugten benannten Bereich.
      oRange = ThisComponent.NamedRanges.getByName(sName$)
    
      REM Drucke den Text aus Zelle $Tabelle1.$B$3
      oCell = oRange.getReferredCells().getCellByPosition(0,0)
      Print oCell.getString()
    End Sub

    Dieses Calc Tabellenblatt enthält den obigen LibreOffice Basic Code.