Seite 1 von 1

Benutzerdefinierte Funktionen bringen LibreOffice ständig zum abstürzen

Verfasst: Mo 22. Aug 2022, 01:23
von fbarc
Hallo zusammen,

Ich habe schon wieder was, was mich meine Nerven kostet...

Um meine Namensbereiche dynamisch zu verwalten habe ich die benutzerdefinierte Funktionen genutzt.

In der Beispieldatei funktioniert das auch sehr gut, bei der 1. Spalte.

Ich habe die Formel so gemacht, das man sie zu weiteren Spalten "ziehen" kann, doch da stürzt LibreOffice meistens ab.
Man kann die Datei dann nur noch öffnen mit deaktivierten Makros.

Manchmal startet die Datei auch nach einem Absturz, doch meisten nicht mehr.
Ich habe dann im Code mal eine Leerzeile dazugemacht, oder gelöscht und frisch gespeichert... dann ging es wieder.

Das ist wohl ein Bug im Programm...

Kann man dies irgendwo melden, daß sich die Programmierer das mal anschauen können??


Im Anhang noch 2 Dateien, die eine mit einer Spalte, die funktioniert,
Dynamische_Namens_Bereiche.ods
1. Datei
(14.32 KiB) 68-mal heruntergeladen
die 2. mit mehreren Spalten bekomme ich nicht mehr zum laufen (außer ich lösche die Funktion)
Dynamische_Namens_Bereiche_erweitern_Absturz.ods
2. Datei
(13.96 KiB) 68-mal heruntergeladen

Re: Benutzerdefinierte Funktionen bringen LibreOffice ständig zum abstürzen

Verfasst: Mo 22. Aug 2022, 16:55
von F3K Total
Hi,
irgendwie durch Intuition bin ich darauf gekommen wie ich eine funktionierende Variante erzeugen kann.
Statt die UDF nebeneinander anzuordnen, habe ich sie untereinander geschrieben, schwubs, klappt es.
Es hängt vermutlich mit der Reihenfolge, in der die Berechnungen ausgeführt werden zusammen, aber wissen tue ich es auch nicht.

Wenn du folgenden Code verwendest, legt die UDF die Namensbereiche auch selbsttätig an.

Code: Alles auswählen

Function set_named_range(strTabName as String, Spalte as String, cA as integer, cE as integer, BereichName as String) as string
    meinDok	=	ThisComponent
	sContent	=	"$" & strTabName & ".$" & Spalte & "$" & cA & ":$" & Spalte & "$" &cE
	oNamedRanges = meinDok.NamedRanges
	if oNamedRanges.hasByName(BereichName) then
	    oNamedRange = oNamedRanges.getbyName (BereichName)
	    oNamedRange.SetContent (sContent)
	else
            oCelladdress = meinDok.Sheets.getbyName(strTabName).getCellRangebyName(Spalte & cA).Celladdress
	    oNamedRanges.addNewByName(BereichName,sContent,oCelladdress,0) 'fehlenden Namensbereich  hinzufügen
	endif
	set_named_range = sContent
End Function
Gruß R

Re: Benutzerdefinierte Funktionen bringen LibreOffice ständig zum abstürzen

Verfasst: Mi 24. Aug 2022, 20:34
von Helmut_S
Hallo, anbei noch ein (einfacher) Vorschlag zum Erstellen von dynamischen Bereichen, ohne UDF-Funktionen.
Vielleicht kann er dir irgendwie als Anregung nützen.
Gruß Helmut