Mit Währungsformaten richtig rechnen

Ich möchte bei der Programmierung mit Visual Basic Zahlen im DM-Format addieren. Die Zahlen für die Nachbearbeitung stammen aus einer Excel-Datei. Bisher gelingt mir die Typumwandlung der String-Variablen in numerische Variablen nicht richtig.

Zahlen im Währungsformat sind keine echten String-Variablen, sondern bereits numerische Variablen. Die Währungsdarstellung resultiert aus der Formatdefinition für die Excel-Zellen. In der Zelle selbst steht eine Zahl. Daher können Sie die Zellinhalte direkt in eine numerische Variable einlesen und damit sofort rechnen.

Sie können aber auch den Zellinhalt zunächst als String-Variable auslesen und dann mit der VBA-Funktion »Ccur« in eine Variable vom Typ »Currency (Währung)« umwandeln. Dann funktioniert die Umwandlung auch bei unterschiedlichen Ländereinstellungen für das Dezimaltrennzeichen und das Zeichen für die Zifferngruppierung. Wenn Sie in VBA jedoch die Funktion »Val« verwenden, können Fehler auftreten. In der Beispiel-Datei auf der Heft-CD (CHIP-Code CURRENCE) finden Sie drei VBA-Makros für den richtigen Umgang mit Währungen.


Sub Addi1()
Dim X, Y
X=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(2, 1)
Y=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(3, 1)
ActiveWorkbook.Worksheets (äTabelle1ô).Cells(6, 1) = X + Y
End Sub

Sub Addi2()
Dim X, Y
Dim St As String, St2 As String
St=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(2, 1)
St2=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(3, 1)
X = CCur(St)
Y = CCur(St2)
ActiveWorkbook.Worksheets (äTabelle1ô).Cells(8, 1) = X + Y
End Sub

Sub Addi3()
Dim X, Y
Dim St As String, St2 As String
St=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(2, 1)
St2=ActiveWorkbook.Worksheets (äTabelle1ô).Cells(3, 1)
X = Val(St)
Y = Val(St2)
ActiveWorkbook.Worksheets (äTabelle1ô).Cells(10, 1) = X + Y
End Sub