Zellnamen per Makro vergeben

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Zellnamen per Makro vergeben

Beitrag von keksi1970 »

Hi,

ich möchte per Makro einem oder mehreren Bereichen oder Einzelzellen in einem Sheet Namen geben, auf die ich mit "getcellrangebyname" zugreifen kann

geht das überhaupt ?

lg

Andreas
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Zellnamen per Makro vergeben

Beitrag von turtle47 »

Hallo Andreas,

Code: Alles auswählen

Sub Name_Zellbereich
Dim aRefPos As New com.sun.star.table.CellAddress 
	aRefPos.Sheet = 0 
	oRanges = ThisComponent.NamedRanges
	oRanges.AddNewByName( "NeuerZellbereich21", "Tabelle1.B11:B15", aRefPos, 0 ) 
End Sub
sollte funktionieren.

Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Zellnamen per Makro vergeben

Beitrag von keksi1970 »

Danke Jürgen,

ich füge also den bereits benannten Bereichen ( oRanges = ThisComponent.NamedRanges)
einfach welche hinzu (oRanges.AddNewByName)

"NeuerZellbereich21" = Name des Zellbereiches
"Tabelle1.B11:B15" = der Bereich

und der Rest ?
aRefPos = ?
0 = ?


lg
Andreas
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Zellnamen per Makro vergeben

Beitrag von turtle47 »

Hi Andreas,
keksi1970 hat geschrieben: und der Rest ?
aRefPos = ?
0 = ?
wenn Du so fragst kannst Du mir sicher auch erklären wofür der Rest gut ist.

Hier in diesem Code wird z.B. der Rest auch nicht angegeben.
' we set our named range name:
Dim oCellAddress As new com.sun.star.table.CellAddress
oCellAddress.Sheet = 0 ' The first sheet
oRanges.addNewByName(sName$,xcl$,oCellAddress,0)
Man kann es natürlich auch so machen:

Code: Alles auswählen

Sub Name_Zellbereich
Dim aRefPos As New com.sun.star.table.CellAddress 
	aRefPos.Sheet = 0 
	aRefPos.Column = 0
	aRefPos.Row = 0
	oRanges = ThisComponent.NamedRanges
	oRanges.AddNewByName( "NeuerZellbereich21", "Tabelle1.B11:B15", aRefPos, 0 ) 
End Sub
Ich habe nur keinen Unterschied festgestellt ob mit oder ohne:

Code: Alles auswählen

	aRefPos.Column = 0 ' oder 5 oder ? ..........
	aRefPos.Row = 0 ' oder 3 oder ? ..........
Viele Grüsse.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zellnamen per Makro vergeben

Beitrag von Stephan »

und der Rest ?
http://api.openoffice.org/docs/common/r ... dNewByName
Ich habe nur keinen Unterschied festgestellt ob mit oder ohne:
Dann markiere verschiedene Zellen bevor Du den Dialog Einfügen-Namen festlegst. Der Zellbereich B11:B15 für den benannte Bereich gilt nämlich bei:

Code: Alles auswählen

Sub Name_Zellbereich
Dim aRefPos As New com.sun.star.table.CellAddress 
   aRefPos.Sheet = 0 
   aRefPos.Column = 5
   aRefPos.Row = 3
   oRanges = ThisComponent.NamedRanges
   oRanges.AddNewByName( "NeuerZellbereich23", "Tabelle1.B11:B15", aRefPos, 0 ) 
End Sub
nur dann wenn die Zelle entsprechenden Offsets markiert ist, hier also F4. Bei allen anderen Zellen ergibt sich ein anderer sichtbarer Eintrag da ja der grundlegende Eintrag relativ ist, also Tabelle1.B11:B15 und nicht etwa, wie es bei manueller Einfügung eines bereiches üblich wäre, $Tabelle1.$B$11:$B$15.
Die Angaben für den Spalten- und Zeilenoffet legen also lediglich die Refrenzadresse fest, es gilt also (hier im Beispiel) das die Verwendung von NeuerZellbereich23 in einer Formel nur dann Tabelle1.B11:B15 referenziert wenn die Formel in Zelle F4 steht, ansonsten verschiebt sich der Bereich entsprechend der Änderung des Bezugs.



Gruß
Stephan
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Zellnamen per Makro vergeben

Beitrag von turtle47 »

Hallo Stephan,

danke für die ausführliche und professionelle Antwort.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
keksi1970
*****
Beiträge: 464
Registriert: So, 27.01.2008 11:47
Wohnort: DU

Re: Zellnamen per Makro vergeben

Beitrag von keksi1970 »

vielen dank ihr beiden,

also muss ich entweder als Bereich("$Tabelle1.$B$11:B$$15") angeben oder Zelle "A1" markiert haben ?
Und bei "A2" würde sich ohne "$" der Bereich auf "B12:B16" verschieben ?

lg andreas
Antworten