Seite 1 von 1

[Gelöst] Calc-Funktion in Makro aufrufen - Anfängerfrage

Verfasst: Fr 24. Jan 2025, 20:22
von nienna
Hallo allerseits,
ich scheine da etwas grundsätzlich nicht verstanden zu haben. Nach langem Herumprobieren und endlosem Googlen konnte ich mein Problem auf folgenden Kern reduzieren:

Weshalb führt folgender Makro-Code zur Fehlermeldung "BASIC-Laufzeitfehler.
Objektvariable nicht belegt."?

Code: Alles auswählen

Function meinMW(Zellen1 As Object) As Double
    meinMW = Application.WorksheetFunction.Average(Zellen1)
End Function
Der Code wird durch den Aufruf in einer Zelle aufgerufen, etwa durch

Code: Alles auswählen

=meinmw(A1:D1)
Ich befürchte, dass die Lösung ganz einfach ist... Diverse KI-Prompts konnten mir da allerdings nicht weiter helfen... Aber es gibt doch bestimmt jede Menge schlaue Hirne da draußen, die es locker mit ChatGPT & Co. aufnehmen können, oder?

Liebe Grüße

Re: Calc-Funktion in Makro aufrufen - Anfängerfrage

Verfasst: Fr 24. Jan 2025, 20:57
von karolus
Warum nimmst du nicht einfach die Formel:

Code: Alles auswählen

=MITTELWERT(D1:D4)

Code: Alles auswählen

option VBAsupport 1

Function meinMW(Zellen1 As Object) As Double
    meinMW = Application.WorksheetFunction.Average(Zellen1)
End Function
Was ich noch weniger verstehen kann… Du schwadroniest was von ChatGPT, google ectpp, aber das momentan neueste Thema neben deinem eigenen Thread, beantwortet exakt die gleiche Frage und die übersiehst du geflissentlich :roll:

Re: Calc-Funktion in Makro aufrufen - Anfängerfrage

Verfasst: Sa 25. Jan 2025, 10:09
von nienna
Danke für die Antwort.
Warum nimmst du nicht einfach die Formel:
Was ich tun möchte, ist natürlich etwas verschachtelter, beruht aber im Wesentlichen darauf, ganz normale Calc-Funktionen in einer eigenen Funktion aufzurufen. Und das klappt eben nicht wie von mir erwartet. Und ich weiß nicht warum, um den Code zu verbessern.
Und dass der Nachbarthread exakt dasselbe behandelt, ist vielleicht einem Experten klar, aber für mich ist die Fehlermeldung "Objektvariable nicht belegt" etwas anderes als "Es ist eine Ausnahme aufgetreten Type: com.sun.star.lang.IllegalArgumentException". Klar, hat irgendetwas mit Argumenten zu tun, aber exakt gleich?
Dass in dem Thread irgendwo eine Lösung aufgezeigt wird, entgeht mir immer noch. Die Quintessenz finde ich im Satz
Es wird also darauf hinauslaufen, die details jeder einzelnen Funktion auszuprobieren (insbesondere wie robust sie gegenüber den Argumenten sind).
Jetzt mal ehrlich, wie soll ich aus dem Thread die Lösung

Code: Alles auswählen

option VBAsupport 1
herauslesen?
Denn das bringt's tatsächlich. Wie von mir vermutet, ganz einfach. Danke dafür.
Warum das etwas bringt, weiß ich zwar immer noch nicht, das kriege ich aber schon noch raus...
Viele Grüße

Re: [Gelöst] Calc-Funktion in Makro aufrufen - Anfängerfrage

Verfasst: Sa 25. Jan 2025, 14:10
von mikele
Hallo,
du benötigst die Zeile

Code: Alles auswählen

option VBAsupport 1
weil du in deinem Makro die Programmiersprache von Excel (VBA) benutzt. Dadurch wird Excel-Code auch in LO lauffähig. Allerdings gilt das nicht für jeden VBA-Code.
Das hat grundsätzlich nichts mit dem Aufruf der Calc-Funktionen zu tun. Wie das mit Starbasic funktioniert, ist in dem anderen Thread geklärt worden.