vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.5  | Shop Copyright ©2000-2008
 
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:  4.502 
ohne HomepageSystem:  Win9x, WinNT, Win2000, WinXP, Vista Beispielprojekt auf CD 

Mit nachfolgender Funktion lässt sich die IBAN-Nummer sowohl für deutsche als auch österreichische Bankverbindungen ermitteln.

Beschreibung der Parameter:

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

' 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$(Str$(pz))
  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 4.502 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.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

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

Ein absolutes Muss - Mehr als 650 MByte geballtes Wissen!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2008 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