VBA lernen - Excel 2007/2010 (7)
Einzelne Prozeduren für Gesamtlösung nacheinander aufrufen: Prozeduren über Rahmenprozedur zusammenstellen
Prozeduren über Rahmenprozedur zusammenstellen
Auf dieser Seite
Mit Bild
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.
Mit Bild
Nach den nötigen Variablendefinitionen wird in der ersten Prozedur der Vorname des Bedieners eingegeben.
Mit Bild
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
Mit Bild
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.
Mit Bild
Sub Netto() On Error GoTo Eingabefehler NettoBetrag = _ InputBox("Hallo " & Vorname _ & ", den Nettobetrag in Euro bitte!", Titel) Exit Sub Eingabefehler: Resume End Sub
Mit Bild
Die anschließende Prozedur erledigt die Eingabe eines Prozentsatzes
Mit Bild
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
Mit Bild
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.
Mit Bild
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
Mit Bild
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!
Mit Bild
Die Prozeduren werden als Methoden und die Variablen als Eigenschaften angezeigt.
Mit Bild
Sub Bruttoberechnen() Call UP.Eingabe Call UP.Netto Call UP.Prozent Call UP.Brutto MsgBox "Tschüß, " & Vorname & "!" End Sub
Mit Bild
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.