Komisch ist aber, dass AOO und LO die Funktionen kennt, wenn man den Code im Basic Editor verändert hat. Die Hoffnung währe gewesen, dass es einen Trick gibt wie man das dem Programm beibringen kann ohne dass man den Basic Editor öffnen muss.
Falls Du damit leise Zweifel anmelden möchtest, dann nur zur Sicherheit: AOO/LO kennen die dann deshalb weil Du durch das Ändern automatisch das Laden der Bibliothek auslöst.
Das Ganze ist bekannt und dieses Verhalten also nichts völlig Ungewöhnliches. Beim Zugriff per Makro auf nicht angemeldete Bibliotheken ist es sogar so das Programm das per Fehlermeldung bemängelt, im selben Moment aber die Bibliothek danach angemeldet ist.
Hier bei benutzerdefinierten Funktionen die im Tabellenblatt aufgerufen werden ist die Situation (erfahrungsgemäß) deshalb noch komplizierter weil der Zugriff Teil des Ladens der Datei ist und per Code noch nicht das gesamte Dokument (Dokument-Objekt) erreicht werden kann
[1], weswegen ich auch pessimistisch bin das es über den Umweg über eine andere Bibliothek zu lösen wäre, jedoch ist es das Beste was mir einfällt.
Vielleicht ein anderer Syntax?
Nein, geht nicht.
Das habe ich schon probiert. Bin dann aber daran gescheitert, dass ich nicht wusste wie ich im Standard mit einem Range (Bereich mehrerer Zellen) umgehe.
Mein Vorschlag war doch nur von einer Funktion aus eine Andere aufzurufen. Also z.B. existiere bisher die Funktion:
Code: Alles auswählen
Function mySum(a as long, b as long) as long
mySum = a + b
End Function
dann sollst Du nichts weiter tun als:
Code: Alles auswählen
Function mySum(a as long, b as long) as long
mySum = mySum_work(a, b)
End Function
Function mySum_work(a as long, b as long) as long
mySum_work = a + b
End Function
Inzwischen ist das aber ohnehin hinfällig weil Du ja schreibst mySum sei nur ein Beispiel, woraus folgt Du kannst die Funktionen/Makros gleich alle in die Bibliothek "Standard" packen.
Offen gesagt würde ich mich, an Deiner Stelle, nun auch nicht allzulange damit beschäftigen es ohne Umschreiben des Code auf StarBasic lösen zu wollen, denn ob das im konkreten Fall klappt ist nicht sicher und u.U. stellst Du nach Stunden des Probierens fest das es nicht geht.
Ja, ich sehe wie der Code insgesamt beschaffen ist und das das Umschreiben etwas Arbeit machen wird, weshalb das Vorstehende nur ein Rat ist.
Gruß
Stephan
[1]
erläuterndes Beispiel
für AOO:
in der angehängten Datei sind zwei benutzerdefinierte Funktionen:
Code: Alles auswählen
Function jms1()
jms1 = ThisComponent.URL
End Function
Function jms2()
jms2 = ThisComponent.getLocation
End Function
Beim Öffnen der Datei liefert aber nur eine Funktion die Dokumentadresse als Text. Wenn Du jedoch NACHDEM die Datei fertig geladen ist UMSCHALT+STRG+F9 drückst um die Zellwerte neu zu berechnen liefern plötzlich beide Funktionen ein Ergebnis.
[quote]Komisch ist aber, dass AOO und LO die Funktionen kennt, wenn man den Code im Basic Editor verändert hat. Die Hoffnung währe gewesen, dass es einen Trick gibt wie man das dem Programm beibringen kann ohne dass man den Basic Editor öffnen muss.[/quote]
Falls Du damit leise Zweifel anmelden möchtest, dann nur zur Sicherheit: AOO/LO kennen die dann deshalb weil Du durch das Ändern automatisch das Laden der Bibliothek auslöst.
Das Ganze ist bekannt und dieses Verhalten also nichts völlig Ungewöhnliches. Beim Zugriff per Makro auf nicht angemeldete Bibliotheken ist es sogar so das Programm das per Fehlermeldung bemängelt, im selben Moment aber die Bibliothek danach angemeldet ist.
Hier bei benutzerdefinierten Funktionen die im Tabellenblatt aufgerufen werden ist die Situation (erfahrungsgemäß) deshalb noch komplizierter weil der Zugriff Teil des Ladens der Datei ist und per Code noch nicht das gesamte Dokument (Dokument-Objekt) erreicht werden kann [color=#FF0000][1][/color], weswegen ich auch pessimistisch bin das es über den Umweg über eine andere Bibliothek zu lösen wäre, jedoch ist es das Beste was mir einfällt.
[quote]Vielleicht ein anderer Syntax?[/quote]
Nein, geht nicht.
[quote]Das habe ich schon probiert. Bin dann aber daran gescheitert, dass ich nicht wusste wie ich im Standard mit einem Range (Bereich mehrerer Zellen) umgehe. [/quote]
Mein Vorschlag war doch nur von einer Funktion aus eine Andere aufzurufen. Also z.B. existiere bisher die Funktion:
[code]Function mySum(a as long, b as long) as long
mySum = a + b
End Function[/code]
dann sollst Du nichts weiter tun als:
[code]Function mySum(a as long, b as long) as long
mySum = mySum_work(a, b)
End Function
Function mySum_work(a as long, b as long) as long
mySum_work = a + b
End Function
[/code]
Inzwischen ist das aber ohnehin hinfällig weil Du ja schreibst mySum sei nur ein Beispiel, woraus folgt Du kannst die Funktionen/Makros gleich alle in die Bibliothek "Standard" packen.
Offen gesagt würde ich mich, an Deiner Stelle, nun auch nicht allzulange damit beschäftigen es ohne Umschreiben des Code auf StarBasic lösen zu wollen, denn ob das im konkreten Fall klappt ist nicht sicher und u.U. stellst Du nach Stunden des Probierens fest das es nicht geht.
Ja, ich sehe wie der Code insgesamt beschaffen ist und das das Umschreiben etwas Arbeit machen wird, weshalb das Vorstehende nur ein Rat ist.
Gruß
Stephan
[1]
erläuterndes Beispiel [u]für AOO[/u]:
in der angehängten Datei sind zwei benutzerdefinierte Funktionen:
[code]Function jms1()
jms1 = ThisComponent.URL
End Function
Function jms2()
jms2 = ThisComponent.getLocation
End Function
[/code]
Beim Öffnen der Datei liefert aber nur eine Funktion die Dokumentadresse als Text. Wenn Du jedoch NACHDEM die Datei fertig geladen ist UMSCHALT+STRG+F9 drückst um die Zellwerte neu zu berechnen liefern plötzlich beide Funktionen ein Ergebnis.