Hallo, Matthias!
Nicht deklarierte Variable werden in VBA als Typ Variant verwaltet. Ebenso verhält es sich augenscheinlich mit den Rückabewerten der WorkSheet-Funktionen. Leider kenne ich nicht im Einzelen, wie dieser Datentyp intern verwaltet wird (für Zahlen werden 16 Bytes verbraucht, wobei das Überschreiten der double-Grenzen zu fehlenr führen, also wohl 8 Bytes zur interen Organisation benötigt werden; String-Varianten benötigen eine Vorspann von 22 Bytes)
Ist für eine Variable, die vom Typ Variant ist, die Zuweisung direkt, so können die entsprechenden "Klar"-Eintragungen direkt genutzt werden (Variant/Datentyp, wobei Datentyp nicht Variant ist):
z.B.
DIM test as Variant, l as Integer
test = "testwert" ' test ist als String einsetzbar
l=Len(test)
test = 123.4 'ab jetzt ist test als double direkt nutzbar
Aber auch eine Zuweisung eines dimensionieren Arrays, z.B. DIM a(4,5) as Integer ist geschlossen an die Variant-Variable test einfach über test = a möglich.
Wenn Du bei diesen Ausführungen die Überwachung der Ausdrücke eingeschaltet hast, wirst Du erkennen, wie Variant die Veränderungen verarbeitet.
Wenn du aus Deiner Formel weitere Teilergebnisse Dir anzeigen lässt (Schrittweiser Ablauf des Programmteils), wobei die die entsprechenden Variablen als Variant deklarieren mußt, dann kannst Du verfolgen, wie auf die Werte zugegriffen werden kann.
...Dim MVTxVC As Variant
Dim MVTxVCxMV As Variant
Dim test As Variant
Dim a(12, 3) As Integer
Dim i As Integer, j As Integer
For i = 1 To 12
For j = 1 To 3
a(i, j) = (12 - i) * j
Next
Next
test = 12
test = a
test ="Variant"
MVTxVC = Array(.MMult(.Transpose(Marketvalue), VaCova_Matrix))
MVTxVCxMV = Array(.MMult(.MMult(.Transpose(Marketvalue), VaCova_Matrix), Marketvalue))
...
Um nun auf Deine Eingangsfrage zu kommen, dann ist erkennbar, dass sich der Name MVTxVCxMV nicht auflösen läßt, da er auf einen Speicherbereich vom Typ Variant/Variant verweist. Aber auch die "Ebene" MVTxVCxMV(0) liefert noch den unauflöslichen Speicherbereich Variant/Variant und erst der eingesetzte Zeiger MVTxVCxMV(0)(1) liefer Variant/Double, den Bereich, der als Datentyp ausgewertet werden kann, den die sqr-Funktion erfordert. Leider weiß ich auch nicht mehr zu berichten.
Gruß!