Rubrik: Variablen/Strings · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 06.04.05 |
Argumenttyp ByRef unverträglich Achten Sie bei der Deklaration von Variablen unbedingt darauf, diese einem expliziten Datentyp zuzuweisen! | ||
Autor: Michael Weinberger | Bewertung: | Views: 52.843 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Hatten Sie nicht auch schon einmal das Problem, dass VB den Quellcode mit der Fehlermeldung "Argumenttyp ByRef unverträglich" angemeckert hat?
Nachfolgend ein einfaches Beispiel:
Private Sub Form_Load() Dim s, s2 As String Dim b As Boolean s = "Gurke" s2 = "nsaft!" b = False Call n(s, s2, b) MsgBox (b) MsgBox (s) End Sub Private Sub n(s As String, s2 As String, b As Boolean) s = s & s2 b = True End Sub
Der Fehler tritt hierbei in folgender Zeile auf:
Call n(s, s2, b)
Was ist die Ursache für diesen Fehler?
Die Variable s wurde in der Zeile zusammen mit s2 vermeindlich als String deklariert:
Dim s, s2 As String
Somit sollte die Parameter-Übergabe an die Prozedur n aber doch verträglich sein.
Ändert man nun die Deklarationszeile von s wie folgt...
Dim s As String Dim s2 As String
... funktioniert der Code.
Grund hierfür ist, dass VB alle Variablen, die nicht explizit mit einem bestimmten Datentyp deklariert wurden, als Variant deklariert!
D.h.: VB "liest" folgende Deklarationszeile...
Dim s, s2 As String
...wie folgt:
Dim s As Variant, s2 As String
Fazit:
Am besten man deklariert immer jede Variable in einer eigenen Zeile, so dass man erst gar nicht auf die Idee kommt, mehrere Variablen des gleichen Datentyps einfach durch Komma und ohne explizite Datentyp-Angabe zu deklarieren!