Seite 1 von 1

Re: ZellenName aus 2 Zelleninhalten erzeugen

Verfasst: Fr 29. Jun 2018, 13:57
von mikele
Hallo,
also schreibst du in B2:

Code: Alles auswählen

=a2&"2"&b1
Wo ist jetzt die Frage?

Re: ZellenName aus 2 Zelleninhalten erzeugen

Verfasst: Sa 30. Jun 2018, 16:40
von Mondblatt24
Hallo,
Der NAME der Zelle soll so heissen
siehe hier

Gruß Peter

Re: ZellenName aus 2 Zelleninhalten erzeugen

Verfasst: So 1. Jul 2018, 13:27
von mikele
Hallo,
es gibt meines Wissens keine integrierte Funktion, die einem Bereich einen Namen vergibt.
Wenn du also automatisch einer Zelle einen Namen verpassen möchtest musst du eine benutzterdefinierte Funktion als Makro programmieren.
Beispielsweise so:

Code: Alles auswählen

Function zellname_udf (itab as integer, izeile as integer, ispalte as integer, sText as string) as string
	oDoc=Thiscomponent
	if oDoc.NamedRanges.hasByName(sText) then oDoc.NamedRanges.removeByName(sText)
	oZelle=oDoc.sheets(itab-1).getcellbyposition(ispalte-1,izeile-1)
	odoc.NamedRanges.addNewByName(sText,oZelle.AbsoluteName,oZelle.CellAddress,0)
	zellname_udf=sText
End Function
Der Aufruf erfolgt dann so

Code: Alles auswählen

=zellname_udf(Tabelle();Zeile();Spalte();"der Wunschname")
Die ersten drei Parameter dienen nur dazu, dem Makro mitzuteilen, um welche Zelle es sich handelt, denn soweit ich weiß, gibt es keine Möglichkeit im Makro herauszufinden, aus welcher Zelle der Funktionsaufruf kommt.
ABER:
Der NAME der Zelle soll so heissen nicht der Inhalt ... also in b2 wird =a2&"2"&b1 erzeugt und dann wird das der NAME von dieser Zelle, also zum Beispiel EUR2USD der kann dann in einer Formel verwendet werden =c3*EUR2USD
Wie soll das funktionieren. Nach deiner Beschreibung enthält die Zelle B2 dann den Text "EUR2USD" und die Zelle hat auch diesen Namen. Wenn du dann

Code: Alles auswählen

=c3*EUR2USD
in eine andere Zelle schreibst, führt das zu einem Fehler! Du willst dann nämlich eine Zahl (aus C3) mit einem Text multiplizieren und das funktioniert nicht.
Die Formel

Code: Alles auswählen

=c3*EUR2USD
hätte nur Sinn, wenn in der Zelle "EUR2USD" der Umrechnungskurs stehen würde.
Dazu könnte man die benutzerdefinierte Funktion etwas umstricken:

Code: Alles auswählen

Function zellname_udf (itab as integer, izeile as integer, ispalte as integer, dWert as double, sText as string) as double
	'
	'Parameter:
	'itab ... Tabelle der aufrufenden Zelle
	'izeile ... Zeile der aufrufenden Zelle
	'iSpalte ... Spalte der aufrufenden Zelle
	'dWert ... Wert, den die Zelle haben soll
	'sText ... Name, den die Zelle haben soll
	'
	oDoc=Thiscomponent
	if oDoc.NamedRanges.hasByName(sText) then oDoc.NamedRanges.removeByName(sText)
	oZelle=oDoc.sheets(itab-1).getcellbyposition(ispalte-1,izeile-1)
	odoc.NamedRanges.addNewByName(sText,oZelle.AbsoluteName,oZelle.CellAddress,0)
	zellname_udf=dWert
End Function
Der Aufruf erfolgt dann z. B. so:

Code: Alles auswählen

=zellname_udf(Tabelle();Zeile();Spalte();1,15;"EURO2USD")
Im Ergebnis würde in der Zelle die Zahl 1,15 stehen und hätte den Namen "EURO2USD".