vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Variablen/Strings · Algorithmen/Mathematik   |   VB-Versionen: VB5, VB619.10.06
Berechnung von IBAN-Nummern

Berechnung der IBAN anhand von Länderkennzeichen, Bankleitzahl, Kontonummer

Autor:   Dietrich HerrmannBewertung:     [ Jetzt bewerten ]Views:  35.594 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit nachfolgender Funktion lässt sich die IBAN-Nummer nach der Standard IBAN-Berechnung für deutsche Bankverbindungen ermitteln.
Beachten Sie bitte, dass es zusätzlich sehr viele Ausnahmen gibt (Stichwort IBAN-Regeln).

Tipp:
Um auch die IBAN-Regeln zu berücksichtigen und gleichzeitig auch die BIC zu einer Blz zu ermitteln, gibt es eine fertige Entwicklerkomponente: sevDTA 2.0 (32-Bit DLL für VB6/VBA oder .NET Komponente)

Beschreibung der Parameter:

  • sLand: Länderkennzeichen DE für Deutschland
  • sBLZ: Bankleitzahl
  • sKtoNr: Kontonummer
  • nBLZMaxLen: max. Länge der BLZ (8 für Deutschland)
  • nKTOMaxLen: max. Länge der Kontonummer (10 für Deutschland)

' IBAN-Nummer ermitteln
Private Function IBANCalc(ByVal sLand As String, _
  ByVal sBLZ As String, _
  ByVal sKtoNr As String, _
  Optional ByVal nBLZMaxLen As Integer = 8, _
  Optional ByVal nKTOMaxLen As Integer = 10) As String
 
  Dim zahl As Variant
  Dim pz As Variant
 
  Dim sIBAN As String
  Dim sChar As String
  Dim sTemp As String
  Dim i As Integer
 
  sIBAN = sLand & "00" & _
    Format$(sBLZ, String$(nBLZMaxLen, "0")) & _
    Format$(sKtoNr, String$(nKTOMaxLen, "0"))
 
  sIBAN = Right$(sIBAN, Len(sIBAN) - 4) & Left$(sIBAN, 4)
 
  For i = 1 To Len(sIBAN)
    sChar = Mid$(sIBAN, i, 1)
    If Asc(sChar) > 64 And Asc(sChar) < 91 Then
      sChar = CStr(Asc(sChar) - 55)
    End If
    sTemp = sTemp & sChar
  Next i
 
  zahl = CDec(sTemp)
  pz = 98 - modDecimal(zahl, 97)
 
  sTemp = Left$(sTemp, Len(sTemp) - 2) & Trim$(Format(STR$(pz), "00"))
  sTemp = Right$(sTemp, 6) & Left$(sTemp, Len(sTemp) - 6)
 
  IBANCalc = Chr$(Val(Left$(sTemp, 2)) + 55) & _
    Chr$(Val(Mid$(sTemp, 3, 2)) + 55) & _
    Right$(sTemp, Len(sTemp) - 4)
End Function

Da es sich bei den Berechnungen um sehr große ganze Zahlen handelt, muss auf das Decimal-Format ausgewichen werden (mit CDec) und es braucht eine eigene Modulo-Funktion:

' Hilfsfunktion: Modulo für große Zahlen
Public Function modDecimal(Dividend, Divisor)
  If Divisor = 0 Then
    modDecimal = -1
  Else
    modDecimal = Dividend - Divisor * (Round(Dividend / Divisor))
    If modDecimal < 0 Then modDecimal = Divisor + modDecimal
  End If
End Function

Aufrufbeispiel:

' Deutschland
' BLZ: 793 530 90
' Konto-Nr.: 16303
'
' offizielle IBAN-Nummer lautet: DE65793530900000016303
Dim sIBAN As String
sIBAN = IBANCalc("DE", "79353090", "16303", 8, 10)

Wichtiger Hinweis:
Nur die jeweilige Bank kann offizielle IBANs berechnen, deswegen wird von mir keinerlei Gewähr für die Anwendung der Funktion übernommen.
Quelle IBAN:  http://www.pruefziffernberechnung.de/I/IBAN.shtml
 

Dieser Tipp wurde bereits 35.594 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (3 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel