Der Wert des ByRef-Parameters <Parametername> kann nicht in das entsprechende Argument zurückkopiert werden, da der Typ <Typname1> nicht in Typ <Typname2> konvertiert werden kann.

Eine Prozedur ist mit einem Parametertyp deklariert, der nicht zurück in den aufrufenden Argumenttyp konvertiert werden kann.

Wenn Sie eine Klasse oder Struktur definieren, können Sie einen oder mehrere Konvertierungsoperatoren zum Konvertieren dieses Klassen- oder Strukturtyps in andere Typen definieren. Sie können auch Operatoren für die umgekehrte Konvertierung definieren, um dieser anderen Typen zurück in den Klassen- oder Strukturtyp zu konvertieren. Wenn Sie den Klassen- oder Strukturtyp in einem Prozeduraufruf verwenden, kann Visual Basic mithilfe dieser Konvertierungsoperatoren den Typ eines Arguments in den Typ des entsprechenden Parameters konvertieren.

Wenn Sie das ByRef-Argument übergeben, kopiert Visual Basic manchmal den Argumentwert in eine lokale Variable in der Prozedur, statt einen Verweis zu übergeben. In diesem Fall muss Visual Basic nach Abschluss der Prozedur den Wert der lokalen Variablen zurück in das Argument im aufrufenden Code kopieren.

Wenn ein ByRef -Argumentwert in die Prozedur kopiert wird und das Argument und der Parameter denselben Typ aufweisen, ist keine Konvertierung erforderlich. Wenn hingegen die Typen unterschiedlich sind, muss Visual Basic die Konvertierung in beide Richtungen ausführen. Wenn einer der Typen Ihr Klassen- oder Strukturtyp ist, muss Visual Basic ihn sowohl in den als auch aus dem anderen Typ konvertieren. Dies bedeutet, dass Sie in beide Richtungen Konvertierungsoperatoren definieren müssen.

Fehler-ID: BC33037

So beheben Sie diesen Fehler

  • Verwenden Sie nach Möglichkeit ein Aufrufargument, das denselben Typ aufweist wie der Prozedurparameter, damit Visual Basic keine Konvertierung ausführen muss.

  • Wenn Sie die Prozedur mit einem Argument aufrufen müssen, dessen Typ sich vom Parametertyp unterscheidet, jedoch kein Wert in das aufrufende Argument zurückgegeben werden muss, definieren Sie den Parameter als ByVal anstelle von ByRef.

  • Wenn ein Wert in das aufrufende Argument zurückgegeben werden muss, definieren Sie den Operator für die umgekehrte Konvertierung, damit Visual Basic die Konvertierung zurück in den aufrufenden Argumenttyp ausführen kann.

Weitere Informationen