Hallo,
die folgende Function prüft die eingegebene Artikelnummer (z. B.
aus einer Textbox) und liefert je nach Ergebis der Prüfung folgende Rückgabewerte:
Prüfziffer ist korrekt - TRUE
Prüfziffer ist falsch - die korrekte Prüfziffer
falsches Eingabeformat (Länge <> 7 oder unzulässige Zeichen) -
FALSE
Public Function PruefeArtikelNr(ByVal Nummer As String)
Dim Rvs As String, Pruefziffer As Byte, i As Byte, _
Summe As Integer, Ergebnis As Byte
If Len(Nummer) <> 7 Then
PruefeArtikelNr = False
Exit Function
ElseIf IsNumeric(Nummer) = False Then
PruefeArtikelNr = False
Exit Function
Else
Pruefziffer = Val(Right(Nummer, 1))
Nummer = Left(Nummer, 6)
Rvs = StrReverse(Nummer)
For i = 1 To 6
Summe = Summe + Val(Mid(Nummer, i, 1)) * Val(Mid(Rvs, i, 1))
Next i
Ergebnis = Summe Mod 11
If Ergebnis = Pruefziffer Then
PruefeArtikelNr = True
Else
PruefeArtikelNr = Ergebnis
End If
End If
End Function
Das kann z. b. folgendermaßen ausgewertet werden (wir nehmen an,
dass die Prüfziffer in TextBox1 steht):
Dim p As Variant
p = PruefeArtikelNr(TextBox1.Value)
Select Case p
Case False
MsgBox "Eingabeformat ist fehlerhaft"
Case True
MsgBox "Prüfziffer stimmt"
Case Else
MsgBox "Prüfziffer stimmt nicht, korrekt ist " & p
End Select
Gruß
|