Seite 1 von 1

Zellnamen per Makro vergeben

Verfasst: Sa, 17.01.2009 18:54
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

Re: Zellnamen per Makro vergeben

Verfasst: Sa, 17.01.2009 20:45
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

Re: Zellnamen per Makro vergeben

Verfasst: So, 18.01.2009 15:31
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

Re: Zellnamen per Makro vergeben

Verfasst: So, 18.01.2009 16:37
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

Re: Zellnamen per Makro vergeben

Verfasst: So, 18.01.2009 17:47
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

Re: Zellnamen per Makro vergeben

Verfasst: So, 18.01.2009 18:44
von turtle47
Hallo Stephan,

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

Jürgen

Re: Zellnamen per Makro vergeben

Verfasst: Mo, 19.01.2009 10:20
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