Ich habe zwei Stunden meines Lebens mit der Deklaration eines Arrays verschwendet. Ich weiß jetzt, wie ich das Problem vermeiden kann, aber ich möchte verstehen, was hier schief geht. Ich bin wieder neu bei VBA und möchte verstehen, was ich tue, anstatt nur zufällige Änderungen vorzunehmen, bis es funktioniert ... was ich hier getan habe!
Dieser erste Code funktioniert:
Public Sub Main()
Dim X(3) As Double
Dim V(3) As Double
Call SimpleFunc(X)
Debug.Print "Finished!"
End Sub
Private Sub Func1(ByRef X() As Double)
X(1) = 0.1
X(2) = 0.2
X(3) = 0.3
End Sub
Dieser zweite Code funktioniert jedoch nicht (Fehler beim Kompilieren "Typinkongruenz: Array oder benutzerdefinierter Typ erwartet"). Der einzige Unterschied besteht in der Deklaration von X und V.
Public Sub Main()
Dim X(3), V(3) As Double
Call SimpleFunc(X)
Debug.Print "Finished!"
End Sub
Private Sub Func1(ByRef X() As Double)
X(1) = 0.1
X(2) = 0.2
X(3) = 0.3
End Sub
Warum ist X in diesem letzteren Code kein Array?
Vielen Dank an alle!
Kurz gesagt, Sie müssen den Datentyp für jede Variable angeben, wenn Sie darauf bestehen, Vielfache in einer Zeile zu deklarieren:
Dim X(3) As Double, V(3) As Double
Wenn Sie keinen Datentyp angeben, geht VBA von diesem Typ aus Variant
. A Variant
kann ein sein Array
, aber dann sollten Sie nicht die Array-Notation verwenden:
Dim V(3) As Double
Dim X
X = V ' X is now an array
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen