... dann trägt das Makro die Werte von A1 und B1 in die Spalten E und F ein ...
Das Makro selbst funktioniert.
Allerdings habe ich trotz meiner Suche bisher keinen Hinweis darüber erlangt, wie diese Start-Bedingung definiert werden kann, da ein direkter Aufruf des Makros über eine WENN-Funktion nicht funktioniert. Auch eine Deklarierung nicht als Sub sondern als Function bleibt ohne Erfolg.
=WENN(C1=1;Reset();0) 'führt zu Fehler #NAME? (Makroname wird also nicht erkannt)
Mal abgesehen danvon das das Makro nicht erkannt wird (warum auch immer), funktioniert dort das ganze Verfahren nicht und ich bin etwas erstaunt das niemand hier im Thread auf diese bekannte Besonderheit
direkt hinweist:
eine benutzerdefinierte Funktion (das was hier mit "Makro" gemeint ist wenn ich sehe das es per Zellfunktion aufgerufen werden soll) ist prinzipiell nicht in der Lage aktive Schreibzugriffe auf Zellen des Blattes vorzunehmen aus dem heraus sie gestartet wurde,
wenn sie per Zellfunktion aufgerufen wird.
Es geht also beispielweise NICHT:
Code: Alles auswählen
Function schreibtest(zellname As String, texteintrag As String)
tmp = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(zellname).String = texteintrag
schreibtest = "hallo"
End Function
und Aufruf per:
=WENN(C1=1;SCHREIBTEST("A1";"abc");0)
Ergebnis ist hierbei das zwar "hallo" in der aufrufenden Zelle steht, aber nicht "abc" in A1.
verschiedene Schreibzugriffe die keine Zugriffe auf Zellen sind, funktionieren unter gleichen Bedingungen hingegen schon, z.B. der Zugriff auf den Blattname des Tabellenblattes:
Code: Alles auswählen
Function schreibtest(neuname As String)
ThisComponent.CurrentController.ActiveSheet.Name = neuname
End Function
und Aufruf per:
=WENN(C1=1;SCHREIBTEST("abc");0)
Gruß
Stephan
[quote]... dann trägt das Makro die Werte von A1 und B1 in die Spalten E und F ein ...
Das Makro selbst funktioniert.
Allerdings habe ich trotz meiner Suche bisher keinen Hinweis darüber erlangt, wie diese Start-Bedingung definiert werden kann, da ein direkter Aufruf des Makros über eine WENN-Funktion nicht funktioniert. Auch eine Deklarierung nicht als Sub sondern als Function bleibt ohne Erfolg.
=WENN(C1=1;Reset();0) 'führt zu Fehler #NAME? (Makroname wird also nicht erkannt)[/quote]
Mal abgesehen danvon das das Makro nicht erkannt wird (warum auch immer), funktioniert dort das ganze Verfahren nicht und ich bin etwas erstaunt das niemand hier im Thread auf diese bekannte Besonderheit [i]direkt [/i]hinweist:
eine benutzerdefinierte Funktion (das was hier mit "Makro" gemeint ist wenn ich sehe das es per Zellfunktion aufgerufen werden soll) ist prinzipiell nicht in der Lage aktive Schreibzugriffe auf Zellen des Blattes vorzunehmen aus dem heraus sie gestartet wurde, [u]wenn sie per Zellfunktion aufgerufen wird[/u].
Es geht also beispielweise NICHT:
[code]Function schreibtest(zellname As String, texteintrag As String)
tmp = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(zellname).String = texteintrag
schreibtest = "hallo"
End Function [/code]
und Aufruf per:
=WENN(C1=1;SCHREIBTEST("A1";"abc");0)
Ergebnis ist hierbei das zwar "hallo" in der aufrufenden Zelle steht, aber nicht "abc" in A1.
verschiedene Schreibzugriffe die keine Zugriffe auf Zellen sind, funktionieren unter gleichen Bedingungen hingegen schon, z.B. der Zugriff auf den Blattname des Tabellenblattes:
[code]Function schreibtest(neuname As String)
ThisComponent.CurrentController.ActiveSheet.Name = neuname
End Function[/code]
und Aufruf per:
=WENN(C1=1;SCHREIBTEST("abc");0)
Gruß
Stephan