Informatik :: VBA :: Funktionen

Funktionen

[Allgemeines] [Deklaration] [Aufruf] [Rekursive Funktionen] [Aufgaben]

Allgemeines

In der imperativen Programmierung sind Funktionen ein wichtiges Mittel zur Modularisierung. Oft benötigter Code kann in Funktionen zusammengefasst werden und über den Namen der Funktion nach Bedarf aufgerufen werden.

Funktionen können einen oder mehrere Aufrufparameter haben und liefern nach ihrem Ende i.d.R. einen Funktionswert zurück.

In Excel gibt es bereits eine Vielzahl von implementierten Funktionen, die über den Funktionsassistenten fx aufgerufen weden können.
Sie sind in Kategorien eingeteilt.

  • So gibt es z.B. in der Kategorie Mathematik & Trigonometrie die Funktionen:
        PI(), POTENZ(Basis;Exponent), RUNDEN(Zahl;Anzahl_Stellen), WURZEL(Zahl), ZUFALLSZAHL(), ...
  • oder in der Kategorie Statistik die Funktionen:
        ANZAHL(Zellbereich), MAX(Zellbereich), MIN(Zellbereich), MITTELWERT(Zellbereich)
  • Wir wollen uns anschauen, wie man benutzerdefinierte Funktionen als Makro erstellt.


    Seitenanfang

    Deklaration

    Bevor man eine Funktion verwenden, sprich: aufrufen kann, muss man sie deklarieren.

    Syntax

    Function Funktionsname (x1, x2, ...) As Datentyp
       Anweisungsblock
       Funktionsname = Rückgabewert
    End Function

    Hinweise:

    Beispiel:

    Function monatszins (K, p) As Currency
       Dim jahreszins As Currency
       jahreszins = K * p / 100
       monatszins = jahreszins / 12
    End Function

    Erklärung:
    Die Funktion monatszins bekommt bei einem Aufruf einen Wert für K und einen Wert für p übergeben.
    K und p nennt man Parameter. Sie müssen in VBA nicht deklariert werden!!!
    Die Funktion berechnet die Zinsen für einen Monat und gibt diesen Wert der aufrufenden Stelle zurück.

    Seitenanfang

    Aufruf

    Der Vorteil von benutzerdefinierten Funktionen ist, dass man sie
  • in Excel wie gewohnt als Funktionen in der Kategorie Benutzerdefiniert und
  • in Prozeduren

  • verwenden kann.

    Beispiel:

    Sub zinsen()
      Dim kapital As Currency
      Dim zinssatz As Single
      kapital = InputBox("Bitte geben Sie das Kapital ein!")
      zinssatz = InputBox("Bitte geben Sie den Zinssatz ein!")
      MsgBox("Der Monatliche Zins beträgt " & monatszins(kapital, zinssatz))
    End Sub

    Erklärung:
    Nach Eingabe von Kapital und Zinssatz wird ein Meldungsfenster ausgegeben.
    Im Meldungsfenster wird die Funktion monatszins mit den Werten von kapital und zinssatz aufgerufen.
    Diese oben deklarierte Funktion monatszinssatz gibt dem Meldungsfenster den von der Funktion berechneten Wert zurück, der dann mit dem Text ausgegeben wird.

    Seitenanfang

    Rekursive Funktionen

    Rein intuitiv programmiert man immer iterativ. Die Iteration (v. lat. iterare "wiederholen") ist in der Mathematik eine Methode, sich der Lösung eines Rechenproblems schrittweise, aber zielgerichtet anzunähern. Sie besteht in der wiederholten Anwendung desselben Rechenverfahrens.
    In der Informatik bedeutet Iteration, wenn ein Zugriff schrittweise, beziehungsweise wiederholt, auf Datenstrukturen erfolgt, beispielsweise bei einer FOR-Schleife.

    Als Rekursion (lat. recurrere „zurücklaufen“) bezeichnet man die Technik in Mathematik, Logik und Informatik, eine Funktion durch sich selbst zu definieren (rekursive Definition).

    Jeder Aufruf der rekursiven Funktion muss sich durch Entfalten der rekursiven Definition in endlich vielen Schritten auflösen lassen. Umgangssprachlich sagt man, sie darf nicht in eine Endlosschleife geraten.

    Beispiel:

    Die Funktion sum(n) soll zu jeder Zahl n die Summe der ersten n natürlichen Zahlen berechnen. Sie ist iterativ folgendermaßen definiert:
    Rekursive Funktion:

    Function sum(n) As Integer
      If n = 0 Then
        sum = 0 'Rekursionsanfang
      Else
        sum = sum(n - 1) + n 'Rekursionsschritt
      End If
    End Function

    Iterative Funktion:

    Function sum(n) As Integer
      Dim i As Integer
      sum = 0
      For i = 1 To n
        sum = sum + i
      Next i
    End Function

    Rein mathematische Funktion mit Hilfe der Gaußschen Summenformel:

    Function sum(n) As Integer
      sum = n * (n + 1) / 2
    End Function


    Seitenanfang

    Aufgaben