Access Anfänger: Sub oder Function

Aus DBWiki
Wechseln zu: Navigation, Suche

Viele Einsteiger in die (VBA) Programmierung machen immer wieder den Fehler, Prozeduren und Funktionen zu verwechseln oder diese wahllos zu vermischen.

Wie soll nun aber der zu schreibende Code richtig deklariert werden?

Dazu gibt es eine Richtlinie, die sich jeder angehende Programmierer tief und fest einprägen sollte:

Prozeduren sind Arbeitstiere, sie bewegen etwas, verrichten Dienste.

Funktionen liefern einen Wert zurück.

Makros, die im Zuge ihrer Konvertierung zu VBA-Code umgewandelt werden stehen danach immer als Function in einem Modul, dies ist in 99% der Fälle schlichtweg falsch, da reine Funktionsmakros in der Regel keine Werte zurückgeben sondern wie Sub-Prozeduren etwas bewegen!

Daher sollte sich jeder, der mit dem Programmieren beginnt die Konvention einer Prozedur- / Funktionserstellung gut einprägen und diese auch konsequent verwenden.

Für Prozeduren gilt:

Public Sub TuEtwas()
 
   ... 'öffne z.B. ein Formular
   ... 'drucke einen Bericht
 
End Sub

Für Funktionen gilt:

Public Function LieferEtwas() as Long
 
   ... 'beliebiger Code
   ... 'z.B. eine Berechnung
 
   LieferEtwas = Ergebnis
 
End Function

Beiden können natürlich Werte oder auch Objekte übergeben werden, die dann im Code verarbeitet, geändert oder nur gelesen werden können.

Die Übergabe dieser Werte kann ByRef (als Zeiger) oder ByVal (als Wert {Default!}) und dieses auch Optional erfolgen.

Auch der Aufruf von Prozeduren oder Funktionen soll einem bestimmten Schema folgen:

Prozeduren, eine Sub wird (auf)gerufen

Call TuEtwas

Von einer Function wird ein Wert erwartet

Dim lngXYZ as long
 
lngXYZ = LieferEtwas