Supportnet / Forum / Tabellenkalkulation
Excel: Hilfe zu einer kleinen VBA-Funktion
Frage
Hallo Leute,
ich brauche Eure Hilfe für folgende kleine Funktion:
1) Ich habe eine vorgegebene Zeichenfolge als String (Konstante)
[b]meinefolge [/b]= "0123456789ABCD.....Z"
2) Nach Eingabe einer Zahlen- und/oder Buchstaben-Kombination sollte eine Summe der jeweiligen Position des einzelnen Eingabezeichens in [b]meinefolge [/b] gebildet werden.
Beispiele:
Die Stellenzählung beginnt mit [b]0 (Null)[/b]
Eingabe: 42
Ergebnis: 4 ist an der vierten Stelle, 2 ist an der zweiten also die summe 4+2=6
Eingabe: C6A
Ergebnis: 12-te Stelle + 6-te Stelle + 2-te Stelle =20
Eingabe B04
Ergebnis: 11-te Stelle + Nullte Stelle + 4-te Stelle =15
Vielen Dank für Eure Hilfe,
PL
Antwort 1 von grummelinchen
Hallo
kopiere nachstehenden Code in ein Modul:
Mit dieser Funktion geht sowohl der Aufruf im Tabellenblatt mit =CHKSUM("B04") liefert 15, als auch in vba Debug.Print chksum("C6A") liefert dann allerdings 28 (nicht wie in Deinem 2. Beispiel vermutlich irrtümlicherweise mit 20 beziffert) zurück.
Alternativ kanns Du der Funktion auch noch ein 2.Argument übergeben, das dann meinefolge als Vorgabe ersetzt.
kopiere nachstehenden Code in ein Modul:
Option Explicit
Function chksum(ByVal vstring As String, _
Optional meinefolge As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß")
Dim erg%, i%
For i = 1 To Len(vstring)
erg = erg + (InStr(1, meinefolge, UCase(Mid(vstring, i, 1)))) - 1
Next
chksum = erg
End FunctionMit dieser Funktion geht sowohl der Aufruf im Tabellenblatt mit =CHKSUM("B04") liefert 15, als auch in vba Debug.Print chksum("C6A") liefert dann allerdings 28 (nicht wie in Deinem 2. Beispiel vermutlich irrtümlicherweise mit 20 beziffert) zurück.
Alternativ kanns Du der Funktion auch noch ein 2.Argument übergeben, das dann meinefolge als Vorgabe ersetzt.

