Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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)
Antworten Top
#3
habe noch mal eine testtabelle angefügt.


Angehängte Dateien
.xlsm   16 stelliger code.xlsm (Größe: 8,31 KB / Downloads: 4)
Antworten Top
#4
(16.02.2021, 12: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)
Antworten 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.
Antworten 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?
Antworten 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)
Antworten 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
Antworten 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).
Antworten 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 :)
Antworten Top


Gehe zu:


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