| Fehler abfangen |
| |
| |
| Private Sub Form_Load() | |
| Me.Move (Screen.Width - Me.Width) / 3, (Screen.Height - _ | BildschirmAusgabe des Formulars links oben. |
| Me.Height) / 3 | |
| Me.Caption = "Zins-Berechnung / Laufzeit-Berechnung" | Die Titelleiste des Formulars erhält einen Text. |
| txtZinssatz.Text = "2,5" | Beim Laden des Formulars erhalten die Textfelder |
| txtLaufzeit.Text = "10" | bereits Werte, jedoch keinen Fokus. |
| With txtKapital | Beim Laden des Formulars erhält das Textfeld Kapital |
| .Text = "100" | bereits einen Wert und den Fokus. |
| .SelStart = 0 | |
| .SelLength = Len(.Text) | |
| End With | |
| End Sub | |
| |
| Private Sub cmdRechnen_Click() | Die Variable n ist das Jahr. |
| Dim Kapital As Currency, Laufzeit%, Zinssatz As Single, n% | |
| With txtMonate | |
| .SelLength = Len(.Text) | |
| End With | |
| With txtMonatszahlung | |
| .SelStart = 0 | |
| .SelLength = Len(.Text) | |
| End With | |
| | |
| Me.Caption = "Heute ist der " & Date | Die Titelleiste des Formulars erhält das aktuelle Datum. |
| |
| With txtLaufzeit | |
| .SelLength = Len(.Text) | Die Variable Laufzeit wird dem Inhalt der Textbox |
| Laufzeit = CInt(.Text) | Laufzeit zugewiesen. |
| If Len(.Text) = 0 Or IsNumeric(txtLaufzeit) <> True _ | Prüft, ob für Laufzeit ein Wert eingegeben wurde. |
| Or .Text = "0" Or Laufzeit > 90 Then | |
| lstErgebnis.Clear | |
| MsgBox "Bitte eine gültige Laufzeit eingeben! " & _ | Falls kein Wert in der Textbox steht, erhält man einen |
| vbCrLf & "Maximal 90 Jahre.", 48 | Hinweis. |
| .SetFocus | Die Textbox erhält den Fokus, um einen Wert eingeben |
| Exit Sub | zu können. |
| End If | |
| End With | |
| |
| With txtZinssatz | |
| .SelLength = Len(.Text) | Die Variable Zinssatz wird dem Inhalt der Textbox |
| Zinssatz = CSng(.Text) | Zinssatz zugewiesen. |
| If Len(.Text) = 0 Or IsNumeric(txtZinssatz) = False _ | Prüft, ob für Zinssatz ein Wert eingegeben wurde. |
| Or .Text = "0" Or Zinssatz > 15 Then | |
| lstErgebnis.Clear | |
| MsgBox "Bitte den Zinssatz eingeben!" & vbCrLf & _ | Falls kein Wert in der Textbox steht, erhält man einen |
| "Maximal 15 Prozent.", 48 | Hinweis. |
| .SetFocus | Die Textbox erhält den Fokus, um einen Wert eingeben |
| Exit Sub | zu können. |
| End If | |
| End With | |
| |
| With txtKapital | |
| .SelLength = Len(.Text) | Die Variable Kapital wird dem Inhalt der Textbox |
| Kapital = CCur(.Text) | Kapital zugewiesen. |
| If Len(.Text) = 0 Or IsNumeric(txtKapital) = False _ | Prüft, ob für Kapital ein Wert eingegeben wurde. |
| Or .Text = "" Or Kapital > 10000000 Then | |
| lstErgebnis.Clear | |
| MsgBox "Bitte das Kapital eingeben! " & vbCrLf & _ | Falls kein Wert in der Textbox steht, erhält man einen |
| "Maximal 10.000.000 DM.", 48 | Hinweis. |
| .SetFocus | Die Textbox Kapital erhält den ersten Fokus (also als |
| Exit Sub | letzte aufrufen). |
| End If | |
| End With | |
| |
| lstErgebnis.Clear | Der Befehl Clear löscht "alte Werte" in der Listbox. |
| lstErgebnis.AddItem Item:=" Startkapital: " & Kapital _ | In der Listbox werden verschiedene Überschriften |
| & " DM, Laufzeit: " & Laufzeit & " Jahre, Zinssatz: _ | ausgegeben. |
| " & Zinssatz & " %." | |
| If chkMonatszahlung.Value = 1 Then | Falls das Feld Monatszahlung aktiviert wurde, wird |
| lstErgebnis.AddItem Item:=" Zusätzlich zum Startkapital | eine weitere Überschrift eingeblendet. |
| zahlen Sie " & txtMonate & " mal jährlich weitere _ | |
| " & txtMonatszahlung.Text & " DM ein." | |
| End If | |
| lstErgebnis.AddItem String(Len(lstErgebnis.List _ | Entsprechend der Länge des ersten Eintrags wird eine |
| (lstErgebnis.NewIndex)), "_") | Linie mit Unterstrichen in die Liste eingefügt. |
| lstErgebnis.AddItem Item:="" | |
| lstErgebnis.AddItem Item:=" Ihr Kapital beträgt nach dem:" |
| For n = 1 To Laufzeit | Für jedes Jahr wird ein neuer Wert berechnet. |
| |
| If (chkMonatszahlung.Value = 0) Then GoTo Rechne2 | Wenn Feld Monatszahlung nicht aktiviert wurde, dann |
| If (chkMonatszahlung.Value = 1) And _ | gehe zum Subprogramm "Rechne2". |
| (Len(txtMonatszahlung.Text) = 0 _ | |
| Or IsNumeric(txtMonatszahlung) = False Or txtMonatszahlung.Text = "0") Or _ |
| txtMonatszahlung > 1000 Then | Hier werden Fehler für die Textbox Monatszahlung |
| MsgBox "Falsche Eingabe!" & vbCrLf & "Geben Sie einen | abgefangen und der Fokus gesetzt, falls falsche Eingaben |
| Wert ein, der nicht größer als 1.000 DM ist! ", 48, "Fehler" | gemacht wurden. |
| txtMonatszahlung.SetFocus | |
| Exit Sub | |
| End If | |
| If (chkMonatszahlung.Value = 1) And (Len(txtMonate.Text)_ | Hier werden Fehler für die Textbox Monate abgefangen und |
| = 0 Or IsNumeric (txtMonate) = False Or txtMonate.Text =_ | der Fokus gesetzt, falls falsche Eingaben gemacht wurden. |
| "0") Or txtMonate > 24 Then | |
| MsgBox "Falsche Eingabe!" & vbCrLf & "Geben Sie einen Wert ein...", 48 |
| txtMonate.SetFocus | Falls die Eingaben richtig sind , wird mit Monatszahlung |
| Exit Sub | gerechnet, oder das Subprogramm "Rechne2" wird |
| Else | ausgeführt (ohne Berechung mit den Monatszahlen). |
| Kapital = Kapital + CCur(txtMonatszahlung.Text) * CSng(txtMonate.Text) |
| Rechne2: | |
| Kapital = Kapital + (Kapital / 100) * Zinssatz | |
| lstErgebnis.AddItem Item:=" " & n & ". Jahr " _ | Die Ergebnisse werden im Listenfeld angezeigt. |
| & Format(Kapital, "Currency") | |
| End If | |
| Next | |
| lstErgebnis.AddItem Item:="" | Leerzeile einfügen. |
| End Sub | |
| |
| Private Sub chkMonatszahlung_Click() | Durch das Anklicken der Kontrollkästchen Monatszahlung |
| txtMonatszahlung.Enabled = _ | UND Monate werden die Textfelder aktiviert, bzw. deakti- |
| CBool(chkMonatszahlung.Value) | viert, der Zugriff wird also erlaubt, bzw. verweigert. |
| txtMonate.Enabled = CBool(chkMonatszahlung.Value) | |
| End Sub | |
| |
| |
| Hier beginnt das integrierte Programm für die Laufzeitberechnung: |
| |
| Private Sub cmdRechnen2_Click() | |
| Dim StartKapital As Currency, EndKapital As Currency, Laufzeit2%, Zinssatz2 As Single |
| |
| With txtMonatszahlung2 | |
| .SelLength = Len(.Text) | |
| End With | |
| |
| With txtZielbetrag | |
| .SelLength = Len(.Text) | Die Variable EndKap. wird der Inhalt der Textbox |
| EndKapital = CCur(.Text) | Zielbetrag zugewiesen. |
| If StartKapital > EndKapital Or Len(.Text) = 0 Or _ | Prüfen, ob ein Zielbetrag eingegeben wurde. |
| IsNumeric(txtZielbetrag) = False Or _ | |
| .Text = "0" Or EndKapital > 10000000 Then | |
| txtErgebnis.Text = "" | Die Textbox für das Ergebnis wird gelöscht. |
| MsgBox "Bitte einen Betrag für das gewünschte _ | Falls kein Wert in der Textbox steht, erhält man einen |
| Endkapital eingeben!" & vbCrLf & _ | Hinweis. |
| "Jedoch nicht größer als 10.000.000 DM", 48, "Fehler" | |
| .SetFocus | Die Textbox erhält den Fokus, um einen Wert eingeben |
| Exit Sub | zu können. |
| End If | |
| End With | |
| |
| With txtZinssatz2 | |
| .SelLength = Len(.Text) | Variable Zinssatz wird dem Inhalt der Textbox |
| Zinssatz2 = CSng(.Text) | Zinssatz2 zugewiesen. |
| If Len(.Text) = 0 Or IsNumeric(txtZinssatz2) = False _ | Prüfen, ob für Zinssatz ein Wert eingegeben wurde. |
| Or .Text = "0" Or Zinssatz2 > 15 Then | |
| txtErgebnis.Text = "" | Die Textbox für das Ergebnis wird gelöscht. |
| MsgBox "Bitte einen Wert für den Zinssatz eingeben!" _ | Falls kein Wert in der Textbox steht, erhält man einen |
| & vbCrLf & _ | Hinweis. |
| "Jedoch nicht größer als 15 Prozent", 48, "Fehler" | |
| .SetFocus | Die Textbox erhält den Fokus, um einen Wert eingeben |
| Exit Sub | zu können. |
| End If | |
| End With | |
| |
| With txtStartbetrag | |
| .SelLength = Len(.Text) | Die Variable StartKap wird d. Inhalt der Textbox |
| StartKapital = CCur(.Text) | Startbetrag zugewiesen. |
| If Len(.Text) = 0 Or IsNumeric(txtStartbetrag) = False Or _ | Prüfen, ob für Startbetrag ein Wert eingegeben wurde. |
| .Text = "0" Or StartKapital > 100000 Then | |
| txtErgebnis.Text = "" | Die Textbox für das Ergebnis wird gelöscht. |
| MsgBox "Bitte einen Betrag für das Startkapital eingeben!" | Falls kein Wert in der Textbox steht, erhält man einen |
| & vbCrLf & _ | Hinweis. |
| "Jedoch nicht größer als 100.000 DM", 48, "Fehler" | |
| .SetFocus | Die Textbox erhält den Fokus, um einen Wert eingeben |
| Exit Sub | zu können. |
| End If | |
| End With | |
| |
| txtErgebnis.Text = "" | |
| Do | |
| Laufzeit2 = Laufzeit2 + 1 | Für jeden Monat wird ein neuer Wert berechnet. |
| If (chkMonatszahlung2.Value = 0) Then GoTo Rechne3 | Wenn Monatszahlungen nicht aktiviert sind, überspringe |
| If (chkMonatszahlung2.Value = 1) And _ | die Fehlerabfrage und gehe zum Subprogramm. |
| (Len(txtMonatszahlung2.Text) = 0 _ | |
| Or IsNumeric(txtMonatszahlung2) = False Or _ | Sollen Monatszahlungen berücksichtigt werden? |
| txtMonatszahlung2.Text = "0") _ | |
| Or txtMonatszahlung2 > 1000 Then | |
| MsgBox "Falsche Eingabe!" & vbCrLf & "Nicht mehr _ | Hier werden Fehler abgefangen und der Fokus zurück- |
| als 1.000 DM", 48, "Fehler" | gesetzt, falls falsche Eingaben gemacht wurden. |
| txtMonatszahlung2.SetFocus | |
| Exit Sub | |
| Else | |
| StartKapital = StartKapital + CCur(txtMonatszahlung2.Text) | |
| End If | |
| Rechne3: | Start des Subprogramms. |
| StartKapital = StartKapital + (StartKapital / 100) * _ | Bei der Zinsformel wird der Monatszins ausrechnet. |
| (Zinssatz2 / 12) | |
| Loop Until StartKapital > EndKapital | Ergebnis wird im Textfeld ausgegeben. |
| txtErgebnis.Text = "Das dauert: " & Laufzeit2 \ 12 & " J a h r e u n d " & Laufzeit2 Mod 12 & " M o n a t e" |
| End Sub | |
| |
| Private Sub chkMonatszahlung2_Click() | |
| txtMonatszahlung2.Enabled = _ | Durch Anklicken d. Kontrollkästchens Monatszahlung wird |
| CBool(chkMonatszahlung2.Value) | das Textfeld aktiviert, bzw. deaktiviert, der Zugriff wird |
| End Sub | verweigert / erlaubt. |
| |
| Private Sub cmdDrucken_Click() | Start des Druck-Menüs. |
| Dim a$ | |
| If Printers.Count > 0 Then | Wenn ein Drucker installiert ist, geschieht folgendes: |
| cd1.Flags = cdlPDReturnDC + cdlPDNoPageNums | CommonDialog: Seitenumbruch und keine Seiten- |
| Nummerierung. |
| If rtfEdit.SelLength = 0 Then | Wenn die selektierte Textlänge Null ist, dann: |
| cd1.Flags = cd1.Flags + cdlPDAllPages | CommonDialog: Alle Seiten. |
| Else | Oder: |
| cd1.Flags = cd1.Flags + cdlPDSelection | CommonDialog: Auswahl. |
| End If | |
| On Error GoTo PrintERR | Bei Fehler gehe zum ProgrammEnde. |
| cd1.ShowPrinter | CommonDialog: DruckMenü zeigen. |
| ' a = rtfEdit.SelLength | Variable a erhält den Inhalt der RTF-Box. |
| ' If cd1.Flags = cdlPDReturnDC + cdlPDNoPageNums _ | Wenn CommonDialog folgendes hat, dann selektiere |
| + cdlPDAllPages Then | nichts aus RTF-Box. |
| ' rtfEdit.SelLength = 0 | |
| ' Printer.Print "" | |
| rtfEdit.SelPrint cd1.hDC | Drucker druckt Inhalt der RTF-Box. |
| ' rtfEdit.SelLength = a | RTF-Box erhält Inhalt der Variablen a. |
| ' End If | |
| ' Wenn die markierten Befehle eingebunden werden, wird zusätzlich eine leere Seite nach dem Druckvorgang |
| ' ausgegeben. | |
| Else | |
| MsgBox "Bitte installieren Sie einen Drucker!", 48, _ | Fehlermeldung, wenn kein Drucker installiert ist. |
| "Fehler" | |
| Exit Sub | ProgrammEnde. |
| End If | |
| frmMonatszahlung.Visible = False | Formular Monatszahlung wird unsichtbar. |
| frmDrucken.Visible = True | Formular Drucken wird sichtbar. |
| PrintERR: | ProgrammEnde. |
| End Sub | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| . |
| |