Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlen mit Bindestriche versehen

Zahlen mit Bindestriche versehen
15.05.2019 14:47:36
Lilli
Hallo Ihr lieben,
ich bräuchte bitte Hilfe beim Formatieren von Telekom-Kartennummer.
ich habe folgendes Code im Netz gefunden:
Sub Kartennummer()
Dim a, b, c, d
a = Left(ActiveCell.Value, 1)
b = Mid(ActiveCell.Value, 2, 5)
c = Mid(ActiveCell.Value, 7, 5)
d = Mid(ActiveCell.Value, 12, 8)
e = Right(ActiveCell.Value, 1)
ActiveCell.Value = (a & "-" & b & "-" & c & "-" & d & "-" & e)
End Sub

Ich möchte aber, dass nach jeder Eingabe in den Zellen C2:E150 automatisch mit den Bindestrichen versehen wird. Hier muss ich über jede einzelne Zelle gehen und anklicken.
Das Makro habe ich jetzt in einem Modul eingefügt. Kann es da bleiben oder muss ich: Tab - Code Anzeigen und dann dort einfügen ;)
Vielen Dank für die Mühe und Feedback im Voraus.
Liebe Grüße, Lilli :)
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahlen mit Bindestriche versehen
15.05.2019 14:51:10
Lilli
Ein Makro wäre natürlich klasse. Mich aber auch interessieren, ob es mit der Zellenformatierung dies auch möglich ist.
Vielen Dank,
Lilli
AW: Zahlen mit Bindestriche versehen
15.05.2019 14:51:47
EtoPHG
Hallo Lilli,
Dazu brauchst du keinen VBA Code.
Zellenformat - Benutzerdefiniert:
0-00000-00000-00000000-0

Gruess Hansueli
Anzeige
AW: Zahlen mit Bindestriche versehen
15.05.2019 15:34:42
Daniel
im Prinzip ja, aber nur mit maximal 15 Stellen.
wenn es mehr sind, müssen die Werte Text bleiben, weil dir Excel sonst die letzten Stellen auf 0 setzt, und damit funktioniert dann das benutzerdefinierte Zahlenformat nicht mehr.
Gruß Daniel
AW: Zahlen mit Bindestriche versehen
15.05.2019 15:38:57
Lilli
Hallo Daniel,
danke für die Erklärung, warum es nicht funktioniert.
Viele Grüße, Lilli :)
Anzeige
AW: Zahlen mit Bindestriche versehen
15.05.2019 16:54:30
mmat
Hallo Lilli,
das könnte deine Lösung sein:
Du packst den folgenden Code in die VBA-Codeseite des jeweiligen Arbeitsblatts.
Option Explicit
Function Kartennummer(s As String) As String
Dim a, b, c, d, e
a = Left(s, 1)
b = Mid(s, 2, 5)
c = Mid(s, 7, 5)
d = Mid(s, 12, 8)
e = Right(s, 1)
Kartennummer = a & "-" & b & "-" & c & "-" & d & "-" & e
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
If Intersect(Target, [C2:E150]) Is Nothing Then Exit Sub
If (Target.Cells.Count > 1) Then Exit Sub
s = Target
If InStr(s, "-") > 0 Then Exit Sub
If Len(s)  20 Then Exit Sub
Target.NumberFormat = "@"
Target.Value = Kartennummer(s)
End Sub
Weiterhin soll der Bereich C2:E150 vorher mit dem Zellformat "Text" formatiert werden (sicherheitshalber). Dann müsste das schon funktionieren.
Anzeige
AW: Zahlen mit Bindestriche versehen
15.05.2019 17:50:04
Lilli
Hallo mmat,
das funktioniert perfekt.
vielen lieben Dank für Deine Mühe.
das ist echt klasse. Hurra ;)
Ich danke Dir ganz herzlich.
Liebe Grüße, Lilli :)
gerne wieder
16.05.2019 13:24:24
mmat
man könnte die eingegebene Zahl so auch als ISBN formatieren ... :-)
AW: gerne wieder
16.05.2019 13:34:42
Lilli
Hallo mmat,
vielen Dank für den Hinweis.
Darf ich Fragen, wie man dein Code verändern müsste, wenn man drei Spalten nebeneinander mit unterschiedlichen Trennungen habe. Das heißt, in der erste Spalte habe ich diese SIM-Kartennummer, in der Zweiten Spalte habe ich die MAC-Adresse und in der Dritten eine interne Seriennummer.
welchen Teil muss man verändern:
Option Explicit
Function Kartennummer(s As String) As String
Dim a, b, c, d, e
a = Left(s, 1)
b = Mid(s, 2, 5)
c = Mid(s, 7, 5)
d = Mid(s, 12, 8)
e = Right(s, 1)
Kartennummer = a & "-" & b & "-" & c & "-" & d & "-" & e
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
If Intersect(Target, [C2:E150]) Is Nothing Then Exit Sub
If (Target.Cells.Count > 1) Then Exit Sub
s = Target
If InStr(s, "-") > 0 Then Exit Sub
If Len(s)  20 Then Exit Sub
Target.NumberFormat = "@"
Target.Value = Kartennummer(s)
End Sub

vielen Dank für Deine Mühe im Voraus.
liebe Grüße, Lilli :)
Anzeige
AW: gerne wieder
16.05.2019 14:03:14
mmat
Hallo Lilli,
ich habe keine Ahnung wie eine Sim-Nr oder Mac aussieht. Wie lange sind die und wo sitzen die Striche?
Die grundsätzliche Struktur des Programms ist wie folgt (davon ausgehend, das sich alles in Spalten c-e abspielt):
Option Explicit
Function Kartennummer(s As String) As String
Dim a, b, c, d, e
a = Left(s, 1)
b = Mid(s, 2, 5)
c = Mid(s, 7, 5)
d = Mid(s, 12, 8)
e = Right(s, 1)
Kartennummer = a & "-" & b & "-" & c & "-" & d & "-" & e
End Function
Function SimNummer(s As String) As String
'Hier die Regeln für die Formatierung der Sim-Nummer einfügen
End Function
Function MacNummer(s As String) As String
'Hier die Regeln für die Formatierung der MAC-Nummer einfügen
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String, n As String, c As Long
If Intersect(Target, [C2:E150]) Is Nothing Then Exit Sub
If (Target.Cells.Count > 1) Then Exit Sub
s = Target
If InStr(s, "-") > 0 Then Exit Sub
c = Target.Columns(1) 'hier wird geguckt, in welcher Spalte geändert wurde
If c = 3 Then 'Kartennummer
If Len(s)  20 Then Exit Sub
n = Kartennummer(s)
ElseIf c = 4 Then 'sim-Nr
n = SimNummer(s)
Else  ' c=5 hier steht die ISBN
n = MacNummer(s)
End If
Target.NumberFormat = "@"
Target.Value = n
End Sub
vg, MM
Anzeige
AW: gerne wieder
16.05.2019 14:03:24
mmat
Hallo Lilli,
ich habe keine Ahnung wie eine Sim-Nr oder Mac aussieht. Wie lange sind die und wo sitzen die Striche?
Die grundsätzliche Struktur des Programms ist wie folgt (davon ausgehend, das sich alles in Spalten c-e abspielt):
Option Explicit
Function Kartennummer(s As String) As String
Dim a, b, c, d, e
a = Left(s, 1)
b = Mid(s, 2, 5)
c = Mid(s, 7, 5)
d = Mid(s, 12, 8)
e = Right(s, 1)
Kartennummer = a & "-" & b & "-" & c & "-" & d & "-" & e
End Function
Function SimNummer(s As String) As String
'Hier die Regeln für die Formatierung der Sim-Nummer einfügen
End Function
Function MacNummer(s As String) As String
'Hier die Regeln für die Formatierung der MAC-Nummer einfügen
End Function
Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String, n As String, c As Long
If Intersect(Target, [C2:E150]) Is Nothing Then Exit Sub
If (Target.Cells.Count > 1) Then Exit Sub
s = Target
If InStr(s, "-") > 0 Then Exit Sub
c = Target.Columns(1) 'hier wird geguckt, in welcher Spalte geändert wurde
If c = 3 Then 'Kartennummer
If Len(s)  20 Then Exit Sub
n = Kartennummer(s)
ElseIf c = 4 Then 'sim-Nr
n = SimNummer(s)
Else  ' c=5 hier steht die ISBN
n = MacNummer(s)
End If
Target.NumberFormat = "@"
Target.Value = n
End Sub
vg, MM
Anzeige
AW: gerne wieder
17.05.2019 11:05:19
Lilli
Hallo mmat,
vielen lieben Dank für die Ergänzung. Ich probiere es nachher und gebe Dir auf jeden Fall Bescheid.
Vielen Dank für Deine Mühe.
Viele Grüße, Lilli :)
AW: Zahlen mit Bindestriche versehen
15.05.2019 15:38:04
Lilli
Hallo Hansueli,
vielen Dank für Deine Hilfe, aber funktioniert leider nicht.
Probier doch mal mit diese Zahl: 89490200001551016051
es kommt diese Zahl raus.
89490200001551000000
und so sollte aber erscheinen: 8-94902-00001-55101605-1
Ich habe keine Ahnung woran das liegt.
vielleicht ist doch ein Makro besser...
viele Grüße, Lilli
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zahlen mit Bindestrichen versehen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel Bindestriche zwischen Zahlen einzufügen, kannst du entweder ein VBA-Makro oder die Zellenformatierung verwenden. Hier sind die Schritte für beide Methoden:

VBA-Makro erstellen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein, um die Telekom-Kartennummer zu formatieren:

    Sub Kartennummer()
       Dim a, b, c, d, e
       a = Left(ActiveCell.Value, 1)
       b = Mid(ActiveCell.Value, 2, 5)
       c = Mid(ActiveCell.Value, 7, 5)
       d = Mid(ActiveCell.Value, 12, 8)
       e = Right(ActiveCell.Value, 1)
       ActiveCell.Value = (a & "-" & b & "-" & c & "-" & d & "-" & e)
    End Sub
  4. Um das Format automatisch anzuwenden, füge den folgenden Code in die Codeseite des Arbeitsblatts ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim s As String
       If Intersect(Target, [C2:E150]) Is Nothing Then Exit Sub
       If (Target.Cells.Count > 1) Then Exit Sub
       s = Target
       If InStr(s, "-") > 0 Then Exit Sub
       Target.NumberFormat = "@"
       Target.Value = Kartennummer(s)
    End Sub
  5. Schließe den VBA-Editor und teste das Makro, indem du eine Zahl in die Zellen C2 bis E150 eingibst.


Häufige Fehler und Lösungen

  • Fehler: Zellen formatieren nicht möglich.
    Stellen sicher, dass die Zellen im Textformat sind. Gehe zu Start -> Zellen formatieren -> Text.

  • Fehler: Bindestrich wird nicht angezeigt.
    Überprüfe, ob das Makro korrekt zugewiesen ist und dass die Eingabe in den Zellen keine Bindestriche enthält.

  • Fehler: Ergebnis ist nicht korrekt.
    Überprüfe die Logik im VBA-Code. Möglicherweise sind die Indizes für die Mid-Funktion nicht korrekt.


Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du die Zellenformatierung nutzen:

  1. Markiere die Zellen, in denen du den Bindestrich einfügen möchtest.
  2. Gehe zu Start -> Zellen formatieren -> Benutzerdefiniert.
  3. Gib folgendes Format ein:

    0-00000-00000-00000000-0

Das funktioniert jedoch nur für Zahlen mit maximal 15 Stellen.


Praktische Beispiele

  • Beispiel 1: Eingabe 89490200001551016051 wird zu 8-94902-00001-55101605-1.
  • Beispiel 2: Eine MAC-Adresse kann ähnlich formatiert werden. Du kannst eine Funktion erstellen, die die MAC-Adresse mit Bindestrichen formatiert.

Tipps für Profis

  • Verwende Kommentare im VBA-Code, um die Funktionalität besser zu erklären und zu verstehen.
  • Teste das Makro in einer Kopie deiner Datei, um unbeabsichtigte Datenverluste zu vermeiden.
  • Wenn du regelmäßig mit ähnlichen Formaten arbeitest, speichere deine Makros in einer personalisierten Excel-Vorlage.

FAQ: Häufige Fragen

1. Kann ich den Bindestrich auch in Excel ohne Formel einfügen?
Ja, du kannst Zellen formatieren und das benutzerdefinierte Zahlenformat verwenden, um Bindestriche zwischen den Zahlen einzufügen.

2. Wie kann ich die Formatierung für eine MAC-Adresse anpassen?
Erstelle eine separate Funktion in VBA, ähnlich wie die für die Kartennummer, die das gewünschte Format für die MAC-Adresse verwendet.

3. Was passiert, wenn ich mehr als 15 Stellen eingebe?
Excel behandelt Zahlen mit mehr als 15 Stellen als Text, was bedeutet, dass die benutzerdefinierte Formatierung nicht angewendet wird. Du musst sicherstellen, dass die Zellen als Text formatiert sind.

4. Wie kann ich die Formatierung für verschiedene Spalten anpassen?
Du kannst mehrere Funktionen in VBA erstellen, um verschiedene Formate für unterschiedliche Spalten zu verwenden, wie im Beispiel für die SIM-Nummer und MAC-Adresse gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige