Argumenttyp ByRef unverträglich

JEDER der öfter VBA programmiert kennt diese Fehlermeldung: „Argumenttyp ByRef unverträglich“. Die Lösung ist ganz einfach. Das nervige daran ist, dass einen die Hilfe hierbei vollkommen im Stich lässt.
Und warum geht das Auto-Complete in 8 geht und in Zeile 7 nicht?

Ursache für „Argumenttyp ByRef unverträglich“

Das Problem liegt wieder mal daran, dass VBA manche Dinge einfach anders macht, als andere Programmiersprachen
Typisches Beispiel für „Argumenttyp ByRef unverträglich“

 

In Zeile 9 tritt der Fehler auf. Aber warum, die Variablentyen passen doch?

Der Fehler liegt in Zeile 4 und 5.
Die Variablen text, text2, text3 wurden nur vermeindlich als String deklariert!
In Wirklichkeit ist ist nur text3 ein String. text, text2 sind vom Typ Variant.

Für VBA sieht Zeile 4 wie folgt aus:
Dim text As Variant, text2 As Variant, text3 As String
und nicht als
Dim text As String, text2 As String, text3 As String

Fazit und Best Practice:

  1. Jede Variable in einer Zeile deklarieren.
  2. Jeder Variable explizit einen Datentyp zuweisen.
  3. Variablen nicht wie in anderen Sprachen mit Komma trennen
  4. Wundern, warum das Auto-Complete z.B. in 8 geht und in Zeile 7 nicht.

Ich hoffe dieser kleine Tipp hilft einigen bei der teils frustrierenden Frage, warum der Argumenttyp ByRef manchmal unverträglich ist.

Ähnliche Beiträge:

1 Antwort

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.