Hi all :-)
Ein Beispiel aus dem Netz zur Verdeutlichung !
Gruss Nighty
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!