Problem mit Matrixfunktion im Makro-Modul

Hallo Community,

ich versuche eine eigene Matrixfunktion nach Excel-Manier zu implementieren. Hier ist ein vereinfachtes Bespiel für Demo-Zwecke:

Option Explicit
Option Base 1
Option Compatible
Option VBASupport 1

Function Matrix_1(Zahl As Double) As Variant
Dim Erg(1 To 2, 1 To 2) As Double 

   Erg(1,1) = 11*Zahl
   Erg(1,2) = 12*Zahl
   Erg(2,1) = 21*Zahl
   Erg(2,2) = 22*Zahl
 
   Matrix_1 = Erg
End Function

Die Funktion Matrix_1 soll das Ergebnis direkt in die Tabellenzellen schreiben.

Wenn ich z.B. in die Zelle A1 den Wert 5 eingebe, und die 4 Zellen A2:B3 markieren, die 5 aus A1 als Funktionsargument auswähle: =MATRIX_1(A1) und meine Eingabe mit <Strg><Shift><Enter> abschließe, erscheint lediglich eine (korrekte) Zahl 55 als Ergebnis in Zelle A2. Und das Ergebnis steht nicht in {..} ist also keine Matrix.

Das gleiche Procedere ist in Excel erfolgreich, in der neusten 32-Bit LibreOffice-Version 7.1.4.2 jedoch nicht.

Beim Debuggen im Einzelschritt-Modus mit <F8> erhalte ich darüber hinaus bereits in der Zeile

Erg(1,1) = 11*Zahl

einen unverständlichen BASIC-Laufzeitfehler ‚499‘: Argument ist nicht optional.

Bildbeschreibung

Was mache ich falsch? Und vor allem wie wäre es richtig?

Vielen Dank im Voraus!

Gruß, Andreas

Beim Debuggen im Einzelschritt-Modus mit erhalte ich darüber hinaus bereits in der Zeile einen unverständlichen BASIC-Laufzeitfehler ‚499‘: Argument ist nicht optional.

Zumindest das ist klar. Du bist in dem Moment in der IDE und damit ist bei Klick auf Run, um das Makro zu starten, das Argument Zahl nicht belegt, da der Aufruf ja nicht aus der Zelle heraus erfolgt (und das Argument ist nicht mit dem Schlüsselwort optional als optionales Argument gekennzeichnet). So etwas kann man mit

Function Matrix_1(Optional Zahl As Double) As Variant
...
   if IsMissing(Zahl) then Zahl=<DefaultWert>
...
End Function

abfangen.


Warum das bei Dir nicht klappen will, verstehe ich nicht. Ich erhalte:

Bildbeschreibung

PS

und die 4 Zellen A2:B3 markieren

… das ist unnötig. Es reicht A2 anzuklicken und die Formel als Matrixformel einzugeben (meist kennt man die Dimension der Matrix gar nicht)

Fortsetzung

Das gleiche Procedere ist in Excel erfolgreich, in der neusten 32-Bit LibreOffice-Version 7.1.4.2 jedoch nicht.

Bevor ich nun auf dem falschen Betriebssystem mir eine 32-bit Variante installiere und nochmal teste: Welches Betriebssystem nutzt Du?


**Update** Klappt beim mir auch unter Windows 10 mit der 32-bit Version von LibreOffice:
Version: 7.1.4.2 (x86) / LibreOffice Community
Build ID: a529a4fab45b75fefc5b6226684193eb000654f6
CPU threads: 1; OS: Windows 10.0 Build 19043; UI render: Skia/Raster; VCL: win
Locale: en-US (en_DE); UI: en-US, Calc: threaded

Da kommt bei mir der Verdacht auf, dass etwas mit Deinem LibreOffice Benutzerprofil nicht stimmt. Versuch mal den abgesicherten Modus von LibreOffice (`Hilfe -> im abgesicherten Modus neu starten`)