von F3K Total » Fr, 10.03.2017 21:55
Hallo,
ich habe da eine Alternative anzubieten. Mit folgendem Makro, einmalig ausgeführt, wird auf allen vorhandenen Tabellen einer Datei der Zelle A1 ein Name zugeordnet. Die Tabellen können nach der Ausführung des Makros oben links im Namenfeld, dass sich wie ein Listenfeld verhält, ausgewählt werden:
Code: Alles auswählen
Sub Set_Named_Ranges
ocelladress = Thiscomponent.Sheets(0).getcellbyposition(0,0).Celladdress
oSheets = Thiscomponent.Sheets
for i = 0 to oSheets.count - 1
sSheetName = oSheets(i).Name
sN = format(i+1,"000")
thisComponent.NamedRanges.addNewByName(sN & "_"& sSheetName, sSheetName & ".$A$1",ocelladress ,0)
next i
End Sub

- NR.png (9.81 KiB) 6712 mal betrachtet
Mit diesem Makro können alle Namen wieder entfernt werden:
Code: Alles auswählen
Sub Remove_Named_Ranges
NR = thisComponent.NamedRanges
EN = NR.ElementNames
for i = 0 to ubound(EN)
NR.RemovebyName(EN(i))
next i
end Sub
Gruß R
EDIT: Es ist natürlich nicht nötig die Namen per Makro zu vergeben, man kann sie auch von Hand eingeben, also Zelle oder Zellbereich markieren und im Namenfeld den Namen dafür eintippen. Vorteil: Das Namenfeld ist immer sichtbar, egal auf welchem Tabellblatt man sich gerade befindet.
- Dateianhänge
-
- NamedRanges.ods
- (11.27 KiB) 131-mal heruntergeladen
Hallo,
ich habe da eine Alternative anzubieten. Mit folgendem Makro, einmalig ausgeführt, wird auf allen vorhandenen Tabellen einer Datei der Zelle A1 ein Name zugeordnet. Die Tabellen können nach der Ausführung des Makros oben links im Namenfeld, dass sich wie ein Listenfeld verhält, ausgewählt werden:[code]Sub Set_Named_Ranges
ocelladress = Thiscomponent.Sheets(0).getcellbyposition(0,0).Celladdress
oSheets = Thiscomponent.Sheets
for i = 0 to oSheets.count - 1
sSheetName = oSheets(i).Name
sN = format(i+1,"000")
thisComponent.NamedRanges.addNewByName(sN & "_"& sSheetName, sSheetName & ".$A$1",ocelladress ,0)
next i
End Sub[/code][attachment=1]NR.png[/attachment]Mit diesem Makro können alle Namen wieder entfernt werden:[code]Sub Remove_Named_Ranges
NR = thisComponent.NamedRanges
EN = NR.ElementNames
for i = 0 to ubound(EN)
NR.RemovebyName(EN(i))
next i
end Sub[/code]Gruß R
[color=#FF0000][b]EDIT:[/b][/color] Es ist natürlich nicht nötig die Namen per Makro zu vergeben, man kann sie auch von Hand eingeben, also Zelle oder Zellbereich markieren und im Namenfeld den Namen dafür eintippen. Vorteil: Das Namenfeld ist immer sichtbar, egal auf welchem Tabellblatt man sich gerade befindet.