ich möchte gerne in einem Formular Kreditkartennummern erfassen. Die
eingegebene Nummer (16 stellig) soll in vier 4er Gruppen formatiert werden.
Aus diesem Grund habe ich für diese Zelle eine benutzerdefinierte
Formatierung "#### #### #### ####" vorgegeben.
Allerdings rundet Excel die letzte Stelle generell auf "0" ab.
Hat jemand eine Idee, wie ich mein Problem lösen kann?
Vielen Dank
Uwe
Hallo Uwe,
ich bin mir nicht sicher, aber ich glaube, 16-stellige Zahlen sind zu groß
für Excel. Daher wird alles nach der 15. Stelle abgesägt.
Eine Lösung wäre, die Kreditkartennummer sofort nach Eingabe VBA-gesteuert
umzuformatieren. Ich hoffe, das ist ok für Dich, sonst habe ich mich zehn
Minuten umsonst angestrengt ;-)
Angenommen, die K-Nr. wird in Zelle E2 eingegeben.
Schritt 1:
Zelle E2 als Text formatieren
Schritt 2:
im VBA-Editor folgender Code _im entsprechenden Sheet_:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim vEingabe As String
Dim vEingabeFormatiert As String
Dim vI As Integer
Dim vZähler As Integer 'für Vierergruppen
'Eingabe auslesen
vEingabe = Range("e2")
'Eingabe zeichenweise prüfen
For vI = 1 To Len(vEingabe)
'nur numerische Teile der Eingabe in Ergebnis übernehmen
'(falls Nummer z.B. schon mit Leerzeichen eingegeben wird)
If IsNumeric(Mid(vEingabe, vI, 1)) Then
vEingabeFormatiert = vEingabeFormatiert & Mid(vEingabe, vI, 1)
vZähler = vZähler + 1
End If
'nach jedem vierten numerischen Zeichen ein Leerzeichen einfügen,
'falls weitere numerische Zeichen folgen
If (vZähler Mod 4) = 0 And IsNumeric(Mid(vEingabe, vI + 1, 1)) Then
vEingabeFormatiert = vEingabeFormatiert & " "
End If
Next vI
'formatierte Eingabe eintragen
Range("e2") = vEingabeFormatiert
End Sub
Hoffe, ich konnte Dir helfen.
Gruß
Michael
Hallo Uwe,
hallo Günther,
der Tipp von Günther funktioniert auf jeden Fall. Aber nur dann, wenn die
Kreditkartennummer in einer _anderen_ als der "Eingabezelle" erscheinen
soll.
Gruß
Michael
vielen Dank für deine Mühe. Dank Deiner Anleitung hat es prima geklappt.
Gruß
Uwe