Seite 1 von 1

Zellbezüge in Formeln automatisch durch deren Namen (Benannte Ausdrücke) ersetzen

Verfasst: Mi 24. Aug 2016, 11:25
von EinsamerBaumWald
Hallo,
gibt es eine Funktion, mit der es möglich ist, automatisch absolute und relative Zellbezüge durch deren Namen zu ersetzen?

Am Anfang eines Projektes arbeite ich oft ohne Namen, nur mit Zellbezügen. Später stelle ich dann fest, dass es für die Übersichtlichkeit und Nachvollziehbarkeit der Formeln günstig wäre, mit benannten Zellen (Namen) zu arbeiten. Nun würde ich gerne automatisch überall die vergebenen Namen einsetzen, wo noch absolute oder relative Adressierungen stehen.

Wie ist das möglich?

Falls es keine eingebaute Möglichkeit gibt, wäre eine Makrolösung denkbar, die alle Namen auflistet, die Namen auflöst und dann Suchen und Ersetzen durchführt?
Habe keine große Makro-Erfahrung, aber grundlegende Programmierkenntnisse.

Vielen Dank!

Re: Zellbezüge in Formeln automatisch durch deren Namen (Benannte Ausdrücke) ersetzen

Verfasst: Do 25. Aug 2016, 16:36
von gerderich
Moin,
EinsamerBaumWald hat geschrieben:Hallo,
gibt es eine Funktion, mit der es möglich ist, automatisch absolute und relative Zellbezüge durch deren Namen zu ersetzen?
Weiß ich nicht. Bereiche in Sheets benenne ich oft mit dem folgenden Makro um. Dabei vergebe ich allerdings grundsätzlich schon zu Projektstart Namen. Hat was mit meiner Organisation zu tun. Es ist immer schwierig, im nach hinein eine Ordnung zu schaffen. Im Laufe der Projektdauer ändern sich oft, meist in Datenbankbereichen die Ausdehnungen. Dann nutze ich den folgenden Code:

Code: Alles auswählen

' -------------------------------------------------------------
' @params : sRangeName		Name des Bereiches
'			sRange			der Bereich
' -------------------------------------------------------------
private sub setNamedRange(sRangeName, sRange)
	on Error goto ErrorHandler
	Dim oCellAddress as new com.sun.star.table.CellAddress
	Dim thisDocument as Object
	thisDocument = ThisComponent
	'MsgBox "Name ist : " & sRangeName & chr(13) & "Bereich ist : " & sRange	
	with thisDocument.NamedRanges
		if .hasByName(sRangeName) then
			.removeByName(sRangeName)
		end if
		.addNewByName(sRangeName, sRange, oCellAddress, 0)
	end with	' thisDocument.NamedRanges	
	
	exit sub

ErrorHandler:
	setErrorMsg ( "Error " & Err & ": " & chr(13) & _
		Error$ & " (line : " & Erl & ")" & " in setNamedRange")
	
end sub	' setNamedRange()
' --------------------------------------------------------
private sub setErrorMsg(sMessage)
	dim iStyle as integer
	iStyle = MSGBOX_ICON_EXCLAMATION
	MsgBox (sMessage,iStyle,TITLE_ERROR_BOX)
end sub
Diese Sub wird bei meinen Projekten verwendet, wenn per Maske Daten eingegeben oder gelöscht werden. Hernach werden dann benannte Bereiche neu konfiguriert. Ich könnte mir vorstellen, eine Tabelle, die die Namen und die Bereiche führt (Spalte A die Namen und Spalte B die Bereiche). der Inhalt wird dann per Makro dem o.A. Code übergeben. Ob das eine Vereinfachung gegenüber der gleich von Vorneherein vergebenen Namen ist, sei mal dahingestellt.
Vielleicht ist das ja ein Einstieg?
Gruß
Gerd Erich