Leerzeichen oder Klammer?
Ich gebe zu: so ganz konsequent ist das nicht in VBA. Für Methoden gibt es drei Schreibweisen: Nach einer Methode folgt nichts. Nach einer Methode steht ein Parameter, dann muss ein Leerzeichen geschrieben werden. Nach einer Methode steht ein Parameter und die Methode gibt einen Wert (oder ein Objekt) zurück – dann muss eine Klammer geschrieben werden. Dass es sich bei den drei Befehlen um eine Methode handelt, sieht man, wenn man den Namen der Klasse VBA angibt, also VBA.Beep, VBA.MsgBox, …
So weit so gut. Erstaunlicherweise kann man auch bei Methoden, die nichts zurückgeben eine Klammer schreiben:
Noch erstaunlicher wird es jedoch, wenn eine Methode mehrere Parameter hat – dann ist die Klammer verboten:
Noch erstaunlicher ist es, dass einige Methoden kategorisch die Klammer verbieten:
Aber eben nicht alle Methoden.
Zusammenfassung: Meine Empfehlung: Wenn eine Methode einen Wert zurück gibt, schreibe ich IMMER eine Klammer, wenn sie nichts zurück gibt, schreibe ich NIE eine Klammer. DAS funktioniert immer – ohne Ausnahme. Ehrenwort!
Hallo,
MsgBox liefert durchaus etwas zurück – und oftmals möchte ich das auch auswerten!
Mir geht es auch so, dass das Problem bekannt ist, ich die allgemeine und syntaktisch richtige Lösung allerdings nicht kenne.
Wann verwendest du denn „call“ beim Aufruf von Methoden?
Grüße, Ulrich
Hallo Ulrich,
das Spiel mit Klammer und Leerzeichen ist relativ klar strukturiert – wenn Methoden etwas zurückgeben, funktioniert Klammer immer (muss sein!), wenn sie nichts zurückgeben, funktioniert das Leerzeichen immer.
Ich verwende immer das Schlüsselwort CALL, weil ich so weiß, dass eine andere Prozedur aufgerufen wird. Eine Zeile:
MailVerschicken
sagt mir nichts.
Achtung: Wenn Parameter übergeben werden, muss Call die Methode (die Prozedur) mit Klammern verwenden:
Call MailVerschicken(An:=“Rene“, Body:=“Gruß an Excel!“)
lG :: Rene