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 (hCHIP-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