VBA lernen - Excel 2007/2010 (7)

Einzelne Prozeduren für Gesamtlösung nacheinander aufrufen: Prozeduren über Rahmenprozedur zusammenstellen

Bisher noch keine Bewertungen für diesen Artikel.

Prozeduren über Rahmenprozedur zusammenstellen

Auf dieser Seite

Teillösungen, die in kleinen Prozeduren erledigt werden, können Sie in einer so genannten Rahmenprozedur nacheinander aufrufen. Sehen Sie sich am besten in der Lösungsdatei Lösungen zu Organisation von Prozeduren.xlsm die Prozeduren im Modul UP an. Für die Praxis sind die einzelnen Prozeduren - zugegeben - zu klein. Dieses Beispiel soll eben nur der Demonstration des Anliegens dienen.

Nach den nötigen Variablendefinitionen wird in der ersten Prozedur der Vorname des Bedieners eingegeben.

Option Explicit
Public Vorname As String
Public Titel As String
Public NettoBetrag As Currency
Public Prozentsatz As Single
Public Bruttoergebnis As Currency
Sub Eingabe()
Titel = "Netto => Brutto"
Vorname = InputBox _
("Dein Vorname bitte.",Titel)
End Sub

Beachten Sie bitte die sinnvolle Verwendung der Public-Variablen, damit kann von allen Moduln des Projekts zugegriffen werden. In der nächsten Prozedur erfolgt die numerische Eingabe eines Nettobetrages. Nehmen Sie bitte die bescheidene aber wirksame Fehlerbehandlung war. Wird keine Zahl gemäß des Formates Currency eingegeben, erfolgt wiederholt die Aufforderung zur Eingabe.

Sub Netto()
On Error GoTo Eingabefehler
NettoBetrag = _
InputBox("Hallo " & Vorname _
& ", den Nettobetrag in Euro bitte!", Titel)
Exit Sub
Eingabefehler:
Resume
End Sub

Die anschließende Prozedur erledigt die Eingabe eines Prozentsatzes

Sub Prozent()
On Error GoTo Eingabefehler
Prozentsatz = _
InputBox("Den Prozentsatz" & vbLf & _
"( Beispielsweise: 2,5 oder 7 oder ähnliches) bitte.", _
Titel) / 100
Exit Sub
Eingabefehler:
Resume
End Sub

Der Prozentsatz wurde sogleich mit 100 dividiert, da mit ihm später gerechnet wird.

Die nächste Prozedur berechnet als Ergebnis den Bruttobetrag und gibt ihn sowohl in der Variable Bruttoergebnis als auch in einer Meldung aus.

Sub Brutto()
Bruttoergebnis = _
NettoBetrag + NettoBetrag * Prozentsatz
MsgBox "Hallo " & Vorname & "," _
& vbLf & "ein Nettobetrag von " _
& Format(NettoBetrag, "#,##0.00 Euro") & vbLf _
& "mit einem Prozentsatz von " _
& Format(Prozentsatz, "#,##0.00 %") & vbLf _
& "ergibt einen Bruttobetrag von " _
& Format(Bruttoergebnis, "#,##0.00 Euro") _
& " .", , "Ergebnis " & Titel
End Sub

Die verwendete Funktion Format(NettoBetrag, "#,##0.00 Euro") dient der Ausgabe des Ergebnisses im Euro-Format und wird später im Abschnitt "Funktionen" Punkt "Einige Standardfunktionen" genauer vorgestellt.

Im Modul erstesBeispiel werden diese kleinen Prozeduren durch eine Prozedur(sozusagen als Rahmenprogramm) in der sinnvollen Reihenfolge aufgerufen und so zu einem Ganzen zusammengefügt. Die Aufrufe erfolgen über das Schlüsselwort call unter Angabe des Modulnamens UP. Der Modulname ist an und für sich überflüssig, hilft aber bei der Notation des Codes sehr, den Namen der aufzurufenden Prozedur sicher zu erkennen, sobald nach UP ein Punkt eingegeben wird!

60720_bild01.jpg

Die Prozeduren werden als Methoden und die Variablen als Eigenschaften angezeigt.

Sub Bruttoberechnen()
Call UP.Eingabe
Call UP.Netto
Call UP.Prozent
Call UP.Brutto
MsgBox "Tschüß, " & Vorname & "!"
End Sub

Die Aufteilung der Lösung in Teilprozeduren birgt viele Vorteile: Wenn eine kleine Prozedur fehlerfrei ist, ist sie fertig erstellt. Die logische Fehlersuche reduziert sich dann nur noch auf andere Programmteile. Das macht das ganze übersichtlicher und beugt komplizierten Fehlern vor.