IBAN für deutsche Kontos berechnen
Hallo,
im letzten Beitrag gings um Modulo-Berechnung großer Zahlen. Und genau hier bei der Berechnung des IBAN benötigen wir diese Funktion.
Der übersicht wegen hab ich diese etwas gekürzt:
Private Function Modulo(ByVal Dividend As Double, ByVal Devisor As Double) As Long If Devisor = 0 Then Exit Function Modulo = Dividend - Fix(Dividend / Devisor) * Devisor End Function
Bekannter Weise wird der IBAN wird gebildet aus:
– 2 Ziffern für die Länderkennung
– 2 Ziffern für die Prüfziffer
– Je nach Land bis zu 30 Ziffern für die Kontoidentifikation,
meist bestehend aus Bankleitzahl und Kontonummer und ggf. weiteren Kontrolziffern.
In Deutschland besteht die Kontoidentifikation aus 8-Stelliger Bankleitzahl und auf 10 Stellen aufgefüllt mit Nullen die Kontonummer.
Wie sich diese Kontoidentifikation zusammensetzt ist bei Wikipedia nachzulesen: https://de.wikipedia.org/wiki/IBAN
Kommen wir nun zum Berechnen der Prüfziffer, weil das das einzig schwierige am IBAN ist.
Diese wird Berechnet aus Bankleitzahl und Kontonummer durch Multiplikation von 62 mit den Modulo von BLZ durch 97 addiert mit 1 und dem Modulo von Kontonummer multipliziert mit 27 durch 97
Aus diesem ganzen Ausdruck wird wiederum der Modulo-Wert durch 97 ermittelt und von 98 abgezogen.
Also ziemlich verwirrend das ganze.
Deshalb teilen wir das auf in 2 Schritte, und speichern das Zwischenergebnis in einer Hilfsvariable:
Hilfsvar1 = 62 * (1 + Modulo(Blz, 97) + Modulo(27 * Kto, 97))
Die Prüfziffer berechnet sich dann wie folgt:
98 – Modulo(Hilfsvar1, 97)
Der Rest ist dann ziemlich einfach:
Public Function IBAN(ByVal Kto As Variant, ByVal Blz As Variant) As String Dim Hilfsvar1 As Variant Hilfsvar1 = 62 * (1 + Modulo(Blz, 97) + Modulo(27 * Kto, 97)) IBAN = "DE" & 98 - Modulo(Hilfsvar1, 97) IBAN = IBAN & Blz & Left("0000000000", 10 - Len(Kto)) & Kto End Function
Das wars auch schon wieder für heute.
Bis dahin
© 2015 Andreas Vogt