wenn es Dir nur um das "anhängen", nicht hingegen um die Berechung der Prüfziffer geht, analog zu folgender Ereignisprozedur:
Gruß
Martin Beck
Kannst Du mir jetzt doch auch noch die Berechnung zeigen? Randbedingung: für die theoretische Prüfziffer "10" soll "0" stehen.
Schon im voraus vielen Dank!
leider nein. Ich dachte, da hättest Du schon die Lösung aus dem Archivthread?
Beschreibe doch mal anhand Deiner Aufgabenstellung (ohne Bezug auf den Archivthread) wie die Prüfziffer zu bilden ist und welchen Zweck sie erfüllt, villeicht läßt sich ja noch was machen.
Gruß
Martin Beck
die Aufgabenstellung im Archivtext beschreibt ziemlich exakt auch die meinige:
die Ziffern einer achtstelligen Zahl von rechts beginnend die erste mit 2, die zweite mit 3, die dritte mit 4 (usw. bis 9) multiplizieren,
die Ergebnisse summieren, danach Modulo 11 (Rest aus der Division durch 11) durchführen.
11 minus das o.g. Ergebnis liefert die Prüfziffer für die Zahl.
Diese ist hinten an die Zahl anzuhängen.
In meinem Fall soll für den Sonderfall des Ergebnises "10"
als Prüfziffer die "0" stehen.
Das Archiv-Ergebnis bezieht sich auf zwei Zellen (Eingabe und Ergebniszelle).
Was ich möchte, ist
1. die Zahl eingeben
2. die Prüfziffer dieser Zahl in dieser selbigen Zelle angehängt bekommen.
Ist das möglich? :-)
Gruß
Ulrich
kann nicht als Prüfziffer auch die 11 vorkommen, z.B. bei 4100000?
Versuche mal folgende Ereignisprozedur:
Bei den Prüfziffern 10 und 11 wird die 0 bzw 1 angehängt.
Gruß
Martin Beck
nein, die 11 brauche ich nicht vorzusehen.
Ich habe allerdings Anfängerschwierigkeiten mit dem Einbinden und Deklarieren des Moduls z. B. exakt und nur auf Spalte 3 eines bestimmten Arbeitsblattes. Wie geht das?
Gruß
Ulrich
1. Wieso brauchst Du die 11 nicht vorzusehen, Sie kommt doch als Ergebnis vor, z.B. bei 41000000?
2. Beschränkung auf Spalte C:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then
'bisheriger Code
End If
End Sub
3. Code einfügen wie folgt:
Mit der rechten Maustaste auf das Tabellenregister klicken, "Code anzeigen" anwählen und den Code in das sich öffnende Fenster kopieren.
Gruß
Martin Beck
erstmal herzlichen Dank, es scheint hervorragend zu funktionieren! Genialer Code!!:-)
1. ich hatte mich geirrt: bei Ergebnis "11" soll 0 resultieren und Ergebnis 10 eine Fehlermeldung erscheinen.
2. Wie kann ich die Prüfziffer nach einem Frontslash "/" anhängen?
Das wird's dann aber gewesen sein - versprochen ;-)
Viele Grüße
Ulrich
Gruß
Ulrich
folgender geänderter Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column = 3 Then
If Len(Target) <> 8 Or Not IsNumeric(Target) Then
MsgBox "Keine 8stellige Zahl"
Exit Sub
End If
summe = 0
For i = 1 To 8
summe = summe + Mid(Target, i, 1) * (i + 1)
Next i
PZ = 11 - (summe - Int(summe / 11) * 11)
Application.EnableEvents = False
Select Case PZ
Case Is = 10
MsgBox "Fehler: Prüfziffer ist 10!"
Exit Sub
Case Is = 11
PZ = 0
End Select
Target.Value = Target.Value & "/" & PZ
Application.EnableEvents = True
End If
End Sub
Gruß
Martin Beck
summe = 0
For i = 1 To 8
summe = summe + Mid(Target, i, 1) * (i + 1)
Next i
Mit Mid(Target, i, 1) werden in der Schleife nacheinander die acht Ziffern angesprochen und mit der Zahl i+1 multipliziert. Die Einzelergebnisse werden in der Variablen "Summe" aufaddiert.
Gruß
Martin Beck
alles funktioniert einwandfrei! Vielen herzlichen Dank für Deine Mühe.
Grüße
Ulrich