Einen neuen benannten Bereich erstellen
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
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.
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.