16 stelliger Karten-code
#1
Hallo Profis,

unsere Kunden bekommen jetzt Kundenkarten (leider sind die alle 16-stellig. Da kann man nicht dran rütteln)

Nun habe ich eine Tabelle erstellt, mit anmerkungen. Unter anderem vergebe ich natürlich auch die 16 stellige Kartennummer.

Als benutzerdefiniertes Format habe ich eingegeben:

#### #### #### ####

Zuerst ist mir garnicht aufgefallen das Excel die letzte Zahl ignoriert und eine 0 daraus macht. Nach recherche bei google hängt das ja damit zusammen, das Excel nur 15 Zahlen kennt.

Dann habe ich andere Formate ausprobiert, keines stellt mich zufrieden, weil ich die lücke nach 4 Zeichen nicht habe.

Meine Frage ist nun, kann man das mit VBA lösen? Der trick mit dem Hochkomma übrigens befriedigt mich auch nicht so richtig. Da funktioniert die Lücke auch nicht..

Danke an alle Helfer
Top
#2
Hallöchen,

wieso geht das mit Hochkomme nicht?

Arbeitsblatt mit dem Namen 'Tabelle1'
A
11234 5678 9012 3456
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
habe noch mal eine testtabelle angefügt.


Angehängte Dateien
.xlsm   16 stelliger code.xlsm (Größe: 8,31 KB / Downloads: 4)
Top
#4
(16.02.2021, 13:08)Beltason schrieb: Meine Frage ist nun, kann man das mit VBA lösen?

Moin!
Yepp!

Format("1234567890123456", "@@@@ @@@@ @@@@ @@@@")
ergibt
1234 5678 9012 3456

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#5
Eine 16stellige Zahl bleibt, egal, ob sie danach ungenau wird, eine Zahl. Daher musst Du sie tatsächlich als Text eingeben. Das kannst Du dann ohne Lücken tun und ein lückenherstellendes VBA-Ereignis verwenden.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#6
Danke dir für die schnelle Antwort. Format Text geht natürlich. Der besseren Übersicht hätte ich gerne das nach eingabe von Enter die 16 Zahlen eine Lücke bekommen. Das geht aber leider nur mit Benutzerdefiniert.

Hallo Ralf,

wenn ich deine Formel "1234567890123456", "@@@@ @@@@ @@@@ @@@@" eingebe kommt als ausgabe nur massenweise das Raute Zeichen.
Was mache ich falsch?
Top
#7
Hallöchen,

füge in das Codemodul der Tabelle diesen Code ein

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Column = 4 And Target.Cells.Count = 1 Then
  If WorksheetFunction.IsNumber(Val(Target)) Then
    Target.Value = Format(Target.Text, "@@@@ @@@@ @@@@ @@@@")
  End If
End If
Application.EnableEvents = True
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Hallo Andre, danke für deinen Code.
Ich bin wohl ein Voll-DAU,
ich gebe deinen Code ins Modul ein, ändere Zellen Formatieren auf Zahl, gebe die testzahl 1234123412341231
ein und es Passiert nichts.
Weder Lücke und letzte Zahl wird wieder eine 0
Top
#9
Weder Du noch Schauan haben meine #5 gelesen.

Das lästige manuelle Text-Wandeln kann unterbleiben, wenn Du nur die ersten 15 Ziffern eingibst. Die 16. wird dann als Prüfziffer errechnet. Mit deren Vergleich siehst Du dann, dass Du richtig eingegeben hast.

Das Ereignis dann also ...
1. wandelt in Text,
2. ermittelt (vorher) und hängt (an den Text) die Prüfziffer an, und
3. fügt die textlichen Leerzeichen ein (siehe RPP63 oder schauan).
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top
#10
Doch LCohen, habe ich gelesen.
Kannst du mir in meiner Testtabelle nicht einen fertigen code einbauen. Dann habe ich was zum greifen.

Danke Dir :)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste