VBA Tipp: EAN-13 überprüfen

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

  • Ich möchte eine EAN-13 (Europäische Artikel-Nummer) mit Prüfziffer auf Gültigkeit prüfen.
  • Ich möchte die Prüfziffer einer EAN-13 errechnen.

Lösung

Die EAN-Prüfziffer wird mit einem alternierenden Modulo-Verfahren errechnet:

Public Function EAN13PruefZiffer(EAN As Variant) As Variant
 
   'EAN-13 Prüfziffer errechnen
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim i   As Long
   Dim sum As Long
   Dim fak As Long
 
   EAN13PruefZiffer = Null
 
   If IsNull(EAN) Then Exit Function
   If Len(EAN) <> 12 Then Exit Function
 
   fak = 3
   For i = Len(EAN) To 1 Step -1
      sum = sum + (Asc(Mid$(EAN, i, 1)) - Asc("0")) * fak
      If fak = 3 Then fak = 1 Else fak = 3
   Next
   EAN13PruefZiffer = (10 - sum Mod 10) Mod 10
End Function
 
Public Function EAN13Pruefen(EAN As Variant) As Boolean
 
   'EAN-13 anhand der Prüfziffer überprüfen
   'Quelle: www.dbwiki.net oder www.dbwiki.de
 
   Dim i As Long
   Dim sum As Long
   Dim fak As Long
 
   If IsNull(EAN) Then Exit Function
   If Len(EAN) <> 13 Then Exit Function
 
   fak = 1
   For i = Len(EAN) To 1 Step -1
      sum = sum + (Asc(Mid$(EAN, i, 1)) - Asc("0")) * fak
      If fak = 3 Then fak = 1 Else fak = 3
   Next
   EAN13Pruefen = sum Mod 10 = 0
End Function


Aufruf

im Direktfenster

   Debug.Print EAN13Pruefziffer(128312791233)
   'Rückgabe: 6
 
   Debug.Print EAN13Pruefen("4026700450408")
   'Rückgabe: Wahr
 
   'Uhu-Alleskleber ;=)
Wiki hinweis.png

Anmerkung: Die Berechnung der EAN-8-, EAN-14- und UPCA-Prüfziffer ist bis auf die unterschiedlichen Längen identisch.


Weblinks