Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formatierung Kreditkartennummer

81 views
Skip to first unread message

Uwe Spaan

unread,
Mar 20, 2001, 10:19:52 AM3/20/01
to
Moin, moin,

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


Michael Schüller

unread,
Mar 20, 2001, 1:51:39 PM3/20/01
to

"Uwe Spaan" <uwe....@gmx.de> schrieb im Newsbeitrag
news:997s28$si...@news-1.bank.dresdner.net...

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

Michael Schüller

unread,
Mar 20, 2001, 2:41:10 PM3/20/01
to

"Günther Eichinger" <ez....@t-online.de> schrieb im Newsbeitrag
news:3AB7B14B...@t-online.de...
> Hallo Uwe,
>
> "In Microsoft Excel können Zahlen maximal 15 gültige Ziffern haben."
> (Zitat aus EXCEL-HILFE)
>
> Du könntset die Kreditkartennummern als Text erfassen. Dazu müsstest du
> die fraglichen Zellen VOR DEM EINGEBEN DER ZEICHEN im Textformat
> benutzerdefinieren. Mit den Textfunktionen könnets du sie mit einer
> Formel wie dieser
>
> =LINKS(A1;4)&" "&TEIL(A1;5;4)&" "&TEIL(A1;9;4)&" "&RECHTS(A1;4)
>
> zu vier Blöcken trennen. (Eventuell empfiehlt es sich möglicherweise
> vorhandene Leerzeichen vorher mit
>
> =GLÄTTEN()
>
> aus dem Textstring zu entfernen.)
>
> Gruß
>
> Günther


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

Günther Eichinger

unread,
Mar 20, 2001, 2:36:43 PM3/20/01
to

Uwe Spaan

unread,
Mar 21, 2001, 5:21:05 AM3/21/01
to
Hallo Michael,

vielen Dank für deine Mühe. Dank Deiner Anleitung hat es prima geklappt.


Gruß

Uwe


0 new messages