Währungsrechner


Zunächst ein Blick auf den Projektexplorer:

Projektexplorer

Es folgt zunächst der Code zu Module1:

Option Explicit
Global E_Wert As Currency, Eu_Geld(3) As Currency

Sub Main()
Form2.Show
End Sub
Function PrüfeZeichen(Prüfling As Integer, vorhTxt As String) As Integer
Dim erlaubt As String
If Not (Prüfling = 8) Then '8 ist Backspace zum Korrigieren
erlaubt = "0123456789"
If Len(vorhTxt)> 0 Then erlaubt = ",0123456789"
If InStr(vorhTxt, ",") Then erlaubt = "0123456789"
If InStr(erlaubt, Chr(Prüfling)) = 0 Then
PrüfeZeichen = 0
Exit Function 'Prüfling war unzulässig!
End If
End If
PrüfeZeichen = Prüfling 'Prüfling ist zulässig!
End Function

Erläuterungen:


Das eigentliche Rechenfenster ist "Form1":


 
Option Explicit
Dim Eingabe As Integer

Private Sub Text1_GotFocus(Index As Integer)
Text1(Index).Text = ""
Eingabe = Index
End Sub
Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
KeyAscii = Module1.PrüfeZeichen(KeyAscii, Text1(Index).Text)
End Sub
Private Sub Text1_Change(Index As Integer)
Dim i As Integer
If Index = Eingabe And Text1(Index).Text <> "" Then
E_Wert = CCur(Text1(Index).Text) / Eu_Geld(Index)
For i = 0 To 3
If i <> Index Then Text1(i).Text = Format$(E_Wert * Eu_Geld(i), "fixed")
Next
End If
End Sub

Erläuterungen:

Wie geht's weiter? Über das Menü "Projekt" wähle man "Formular hinzufügen". In dieses Formular gehört außer den (hier) zwei Textfeldern ein Button. Den sollte man zuerst einfügen. (Für Fortgeschrittene: Er erhält dadurch den ersten Focus, mit "Return" kann man das Fenster direkt wegklicken, was mindestens zum Testen günstig ist. Besitzt eines der Textfelder beim Laden des Fensters den Focus, dann wird beim Fensteraufbau das GotFocus-Ereignis ausgelöst und das Feld startet leer.)

Ein besonderer Trick ist bei den beiden Textfeldern nötig. Sie sollen, damit der Code einfacher wird, ein Steuerelementefeld bilden und zweites Problem, die Nummern zwei und drei tragen. Man kann vier Textfelder (Nummern 0 bis 3) einfügen, anschließend die ersten beiden löschen. Alternativ können gleich nur zwei Textfelder eingefügt werden, dann im Eigenschaftsfenster über die Eigenschaft "Index" auf 2 und 3 gesetzt werden.



 
Option Explicit
Private Sub Form_Load()
Label1.Caption = "Kurse vom " & Format$(Now, "short date")
Eu_Geld(0) = 1
Eu_Geld(1) = 1.95583
Eu_Geld(2) = 0.83 'Defaultwerte
Eu_Geld(3) = 1.22
Text1(2).Text = CStr(Eu_Geld(2))
Text1(3).Text = CStr(Eu_Geld(3))
End Sub
Private Sub Text1_GotFocus(Index As Integer)
Text1(Index).Text = ""
End Sub
Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
KeyAscii = Module1.PrüfeZeichen(KeyAscii, Text1(Index).Text)
End Sub
Private Sub Command1_Click()
Dim i As Integer
For i = 2 To 3
If Text1(i).Text = "" Then
MsgBox "Bitte die Einträge ergänzen!"
Exit Sub
Else
Eu_Geld(i) = CCur(Text1(i).Text)
Endif
Next
Form2.Hide
Form1.Show
End Sub

Erläuterungen:

Zum Schluß noch eine Kleinigkeit: Das Programm soll mit dem Modul starten. Denn immerhin muß es die globalen Variablen lernen, danach die Routine "Main()" starten. Das muß dem Projekt erst beigebracht werden. Im Menü "Projekt" den untersten Punkt "Eigenschaften von Projekt1..." wählen. Auf der Registerkarte wählt man, wie im Bild zu sehen:


© R. Hirte * 2001/2004