Geh deinen Weg! Außer er führt an einem Weinkeller vorbei – dann geh in den Keller!

*gggrrrrr* Argumenttyp ByRef unverträglich!

Man kann einer Funktion einen Wert nur mit ByVal übergeben:

Geht doch!

Oder mit einer Hilfsvariablen:

strTemp = Split(strText, „-„)(0)

MsgBox TextVerarbeiten(strTemp)

2 comments

  • Lutz Blumensaat

    Erläuterung:
    VBA-Funktionen können Variablen auf zwei Arten verarbeiten:
    Einmal „byVal“ (by Value), also als Wert, der übergeben wird, z.B. ein Text („Hallo Welt“).
    Die zweite Version ist „byRef“ (by Reference), diese Art ist der Standard. Hier wird die ganze Variable übergeben und ggf. geändert, d.h. intern wird die *Speicheradresse* der Variablen übergeben.

    Die Funktion Split hat aber keine Speicheradresse, an der sie ihr Ergebnis ablegt. Die nachfolgende Funktion kann also nur mit dem *Wert* arbeiten (ByVal) oder nutzt eine Hilfsvariable, die eine übergebbare Speicheradresse hat.

    • Medardus

      Danke,Lutz für die Erläuterungen.
      Ja, ich weiß natürlich. Aber ich gebe zu, dass ich beim Programmieren ein wenig (nur ein klitzeklein wenig) schlampig bin.
      So schreibe ich Sub statt Public Sub. Und Function RechneWas(Wert As Integer) As Integer statt Public Function RechneWas(byRef Wert As Integer) As Integer. Und deshalb habe ich gestutzt, weil meine Funktion keine Funktion Split verarbeiten kann.
      Übrigens: witzigerweise wird
      i = RechneWas(RechneWas(42))
      verarbeitet.
      Liebe Grüße und danke fürs genaue Lesen
      Rene Martin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.