Hauptseite >Tips zu VB5/6 >  "Falsche Anzahl an Argumenten …" - wieso das denn?!
 
Stellen Sie sich vor, Sie geben folgenden völlig korrekten Code ein:

Dim s As String
' ...
s = Left$(s, 1)
            
und erhalten für die letzte Zeile von der IDE folgende Fehlermeldung:

"Fehler beim Kompilieren: Falsche Anzahl an Argumenten oder ungültige Zuweisung zu einer Eigenschaft"

Jetzt ist guter Rat teuer. Wie gesagt: an der Anweisung gibt es nichts auszusetzen.

An dieser Stelle kommt eine Funktionalität der IDE ins Spiel, die oftmals übersehen wird. Setzen Sie im Quelltext den Cursor auf den beanstandeten Funktions-Aufruf (Left$) und drücken Sie die rechte Maustaste. Im daraufhin erscheinenden Popup-Menü wählen Sie "Definition". Sie bekommen nun angezeigt, welche Definition der Left$-Funktion an dieser Stelle verwendet wird. Jede Wette: es ist nicht die, die Sie meinten.

Dann wäre das ja schon mal geklärt. Wie aber bringen wir VB wieder aufs richtige Gleis? Ganz einfach: wir spezifizieren, welche Bibliothek wir meinen, indem wir ihren Namen davorschreiben:

Dim s As String
' ...
s = VBA.Left$(s, 1)
            
Left$ und alle anderen String-Funktionen sind in der Bibliothek VBA definiert. Mit dieser Information an der richtigen Stelle versteht uns VB wieder.

Zugegeben, das Beispiel ist etwas konstruiert (das heisst aber nicht, dass ich nicht auch schon eine von einer externen Bibliothek überschriebene Left$-Funktion erlebt hätte …). Gerne tritt dieses oder ein artverwandtes Problem auf, wenn ein Projekt z.B. ADO und DAO gleichzeitig referenziert. Beide Bibliotheken stellen ein Objekt namens Recordset zur Verfügung. Wenn Sie die gemeinte Bibliothek nicht explizit spezifizieren (z.B. Dim rs As Recordset), bekommen Sie, wenn nicht schon beim Kompilieren der o.g. Fehler auftritt, garantiert spätestens zur Laufzeit an irgendeiner Stelle den Fehler 13 ("Typen unverträglich"). Ohne Angabe verwendet VB die erste Bibliothek unter "Verweise", die das gewünschte Objekt bzw. die gewünschte Funktion zur Verfügung stellt. Sie können im entsprechenden Dialog (Projekt > Verweise) die Priorität selbst beeinflussen. Am besten schauen Sie aber als erstes nach, ob Sie überhaupt alle verwendeten Verweise benötigen …
Hauptseite >  Tips zu VB5/6 >  diese Seite