Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nullen behalten

Nullen behalten
19.01.2014 01:35:18
Uwe
Hallo zusammen,
ich füge in einer Zelle per VBA ein Datum und eine vierstellige Zahl zusammen.
Aus 02.02.14 und 7100 soll 0202147100 werden.
Problem ist, dass die Nullen entfernt werden und genau das soll verhindert werden.
Weiß da jemand Rat?
Gruß Uwe

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nachtrag
19.01.2014 02:24:58
Uwe
Hallo nochmal,
so erhalte ich wenigstens die führende NULL. Die NULL vom Monat wird aber leider nicht mit angezeigt.
aus 02.02.14 und 7199 wird nun 022147199. Ergebnis sollte aber wie gesagt 0202147199 sein.
ActiveSheet.Cells(2, 2) = Datum & DokNr
ActiveSheet.Cells(2, 2).NumberFormatLocal = "000000000"
ActiveSheet.Cells(2, 2).Replace ".", ""
Gruß Uwe

Anzeige
Bei diesem Ergebnis erhebt sich doch ...
19.01.2014 03:06:24
Luc:-?
…sofort die Frage, als was Datum deklariert ist, Uwe,
und ob die ZielZelle wirklich als Zahl formatiert wdn muss?! Wäre Datum nämlich tatsächlich als Date deklariert, dürfte sich das wohl kaum ergeben. Und bei einem String könnte es eigentlich fktionieren. Bei letzterem Fall lass' doch einfach mal die 2.Zeile weg!
Morrn, Luc :-?

Anzeige
AW: Bei diesem Ergebnis erhebt sich doch ...
19.01.2014 13:19:17
Uwe
Hallo ihr Beiden,
habs etwas umgestrickt und ein zusätzliche Variable eingefügt. Ist wahrscheinlich doppelt gemoppelt aber das ist erstmal zweitens.
Ich habe nun ID, Datum und DokNr als String deklariert. In Cells(2,2) wird nun auch Text geschrieben aber leider ohne die führende NULL bei einstelligem Tagesdatum. Sprich aus 02.02.2014 und 7100 wird nun 20220147100 im Textformat. Wie komme ich noch zu der führenden NULL?
ID = Datum & DokNr
ActiveSheet.Cells(2, 2) = ID
ActiveSheet.Cells(2, 2).NumberFormat = "@"
ActiveSheet.Cells(2, 2).Replace ".", ""
VG Uwe

Anzeige
Du solltest .NumberFormat weglassen und ...
19.01.2014 13:38:44
Luc:-?
Datum zu einem String machen (CStr(…), falls es nicht schon einer ist), Uwe! :-|
Gruß Luc :-?

AW: Du solltest .NumberFormat weglassen und ...
19.01.2014 14:08:31
Uwe
Hallo Luc,
hab ich alles getan aber wenn ich mit Replace die Punkte entferne, wird aus 02.02.20147100 (ID) eine Zahl im wissenschaftlichen Format ausgegeben. (2,022E+10)
Bis zu dem Zeitpunkt wo die ID in die Zelle geschrieben wird, ist das Format=Text (Typ 2), sobald die Punkte ersetzt werden ist das Format=Zahl(Typ 1)
Ich gebs bald auf...
Option Explicit
Sub Test()
Dim SensNr As String
Dim wks As Worksheet
Dim Datum As String
Dim DokNr As String
Dim ID As String
Application.DisplayAlerts = False
Worksheets("Vorlage").Copy after:=Worksheets("Vorlage")
NeueEingabe:
SensNr = InputBox("Sensornummer eingeben:", , "J02.")
If StrPtr(SensNr) = 0 Then
ActiveSheet.Delete
Exit Sub
End If
If StrPtr(SensNr) = 1 Or SensNr = "" Then MsgBox "Sensornummer fehlt!", vbCritical
If Len(SensNr)  9 Then
MsgBox "Sensornummer prüfen!", vbCritical
GoTo NeueEingabe
End If
ActiveSheet.Cells(3, 2) = SensNr
For Each wks In ThisWorkbook.Worksheets
If wks.Name = SensNr Then
MsgBox "Ein Tabellenblatt mit diesem Namen existiert schon!" & vbCrLf _
& "Sensornummer prüfen!", vbCritical
GoTo NeueEingabe
End If
Next
ActiveSheet.Name = SensNr
ActiveSheet.Tab.Color = vbGreen
Do
Datum = InputBox("Datum eingeben:", "erwarte Eingabe...", "TT.MM.JJJJ")
If StrPtr(Datum) = 0 Then
ActiveSheet.Delete
Exit Sub
End If
If StrPtr(Datum) = 1 Or Datum = "" Then MsgBox "Datum zwingend erforderlich!"
If Not IsDate(Datum) Then MsgBox "Das ist kein gültiges Datum!", vbCritical
Loop Until IsDate(Datum)
ActiveSheet.Cells(1, 2) = CStr(Datum)
Do
Nochmal:
DokNr = InputBox("Dokumentennummer eingeben:")
If StrPtr(DokNr) = 0 Then
ActiveSheet.Delete
Exit Sub
End If
If StrPtr(DokNr) = 1 Or DokNr = "" Then
MsgBox "Dokumentennummer fehlt!", vbCritical
GoTo Nochmal
End If
If Not IsNumeric(DokNr) Then
MsgBox "Es sind nur Zahlen zulässig!", vbCritical
GoTo Nochmal
End If
If Len(DokNr)  4 Then
MsgBox "Dokumentennummer muss 4-stellig sein!", vbCritical
GoTo Nochmal
End If
Loop Until IsNumeric(DokNr) And Len(DokNr) = 4
ID = Datum & DokNr
ActiveSheet.Cells(2, 2) = ID
'ActiveSheet.Cells(2, 2).NumberFormat = "@"
ActiveSheet.Cells(2, 2).Replace ".", ""
Application.DisplayAlerts = True
End Sub
Grüße Uwe

Anzeige
Mach das so, wie ich geschrieben habe, ...
19.01.2014 14:42:54
Luc:-?
…Uwe,
setze aber noch ein TextPräfix (Apostroph ') vor den Wert bevor du ihn der Zelle üergibst. Dann sollte das nicht passieren.
Luc :-?

Jetzt gehts...
19.01.2014 15:18:58
Uwe
Luc, allerdings konnte ich deine Methode nicht umsetzen. Liegt aber wohl eher an meinen bescheidenen VBA-Kenntnissen. Bin etwas über die Dörfer gegangen und lasse das Datum ohne trennende Punkte in die Inputbox eingeben. So wird dann die ID ohne Probleme generiert und die führende NULL ist auch noch da.
Danke für deine Mühe
Uwe
hier noch die geänderte Version
Do
Datum = InputBox("Datum eingeben:" & vbCrLf _
& "Format beachten!" & vbCrLf _
& "TTMMJJJJ ohne trennende Punkte", "TTMMJJJJ")
If StrPtr(Datum) = 0 Then
ActiveSheet.Delete
Exit Sub
End If
If StrPtr(Datum) = 1 Or Datum = "" Then MsgBox "Datum zwingend erforderlich!"
If Len(Datum) 8 Then MsgBox "ACHTUNG! Bitte das Format beachten! TTMMJJJJ ohne Punkte!", vbCritical
Loop Until Len(Datum) = 8
ActiveSheet.Cells(1, 2) = Date
'
'
'
ID = CStr(Datum) & CStr(DokNr)
ActiveSheet.Cells(2, 2).NumberFormat = "@"
ActiveSheet.Cells(2, 2) = CStr(ID)

Anzeige
AW: Nullen behalten
19.01.2014 11:16:05
Hajo_Zi
Hallo Uwe,
arbeite mit Format und schreibe damit Text in die Zelle.

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Nullen Behalten in Excel: So Funktioniert's


Schritt-für-Schritt-Anleitung

Um führende Nullen in Excel zu behalten, insbesondere bei Datumsangaben und Zahlen, kannst du folgende Schritte ausführen:

  1. Deklaration der Variablen: Stelle sicher, dass Datum und Dokumentennummer als Strings deklariert werden. So behältst du die Formatierung.

    Dim Datum As String
    Dim DokNr As String
  2. Eingabe des Datums: Verwende die InputBox für die Datumseingabe. Achte darauf, dass das Datum im Format TTMMJJJJ eingegeben wird, ohne trennende Punkte.

    Datum = InputBox("Datum eingeben:", "TTMMJJJJ")
  3. ID erstellen: Kombiniere das Datum und die Dokumentennummer zu einer ID und weise diese einer Zelle zu.

    ID = Datum & DokNr
    ActiveSheet.Cells(2, 2) = CStr(ID)
  4. Führende Nullen sicherstellen: Um sicherzustellen, dass die führenden Nullen nicht entfernt werden, setze das Zellenformat auf Text.

    ActiveSheet.Cells(2, 2).NumberFormat = "@"
  5. Ersetze Punkte (falls nötig): Verwende die Replace-Funktion, um Punkte zu entfernen, was die Nummernformatierung beeinflussen könnte.

    ActiveSheet.Cells(2, 2).Replace ".", ""

Häufige Fehler und Lösungen

  • Problem: Nullen bei der Datumseingabe verschwinden.

    • Lösung: Stelle sicher, dass das Datum als String gespeichert wird und das Zellenformat auf Text gesetzt ist.
  • Problem: Ergebnis wird im wissenschaftlichen Format angezeigt.

    • Lösung: Verwende den Textformat-Parameter (NumberFormat = "@"), bevor du den Wert in die Zelle schreibst.

Alternative Methoden

Eine alternative Methode, um führende Nullen zu behalten:

  • Text-Präfix: Setze ein Apostroph (') vor die Zahl. Das zwingt Excel, den Wert als Text zu interpretieren.

    ActiveSheet.Cells(2, 2) = "'" & ID
  • Benutze Formatierung: Statt VBA kannst du auch Excel-Formatierungen verwenden, um führende Nullen anzuzeigen. Du kannst das Zellenformat auf "Benutzerdefiniert" setzen und 0000000000 eingeben, um sicherzustellen, dass eine bestimmte Anzahl von Ziffern angezeigt wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel für das Zusammenfügen von Datum und Dokumentennummer:

Dim Datum As String
Dim DokNr As String
Dim ID As String

Datum = "02022014"  ' Beispiel für Datum
DokNr = "7100"      ' Beispiel für Dokumentennummer

ID = Datum & DokNr  ' Ergebnis: 020220147100
ActiveSheet.Cells(2, 2) = "'" & ID  ' Mit Apostroph

Tipps für Profis

  • VBA-Optionen: Aktiviere die Option Explicit um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.
  • Langsame Eingabe: Verwende Eingabemasken, um sicherzustellen, dass die Benutzer die Daten im richtigen Format eingeben. Dies reduziert Fehler bei der Eingabe.
  • Überprüfung der Eingaben: Implementiere Überprüfungen, um sicherzustellen, dass die eingegebenen Daten den Anforderungen entsprechen (z. B. Länge der Dokumentennummer).

FAQ: Häufige Fragen

1. Wie kann ich führende Nullen bei Datumsangaben in Excel behalten?
Du kannst das Datum als String speichern und das Zellenformat auf Text setzen, um die führenden Nullen zu behalten.

2. Was passiert, wenn ich Punkte im Datum habe?
Wenn du Punkte im Datum hast, kann Excel diese als Trennzeichen für Zahlen interpretieren. Verwende die Replace-Funktion, um diese zu entfernen, bevor der Wert in die Zelle geschrieben wird.

3. Gibt es eine Möglichkeit, mit Formeln führende Nullen zu behalten?
Ja, du kannst die Funktion TEXT() verwenden, um Zahlen mit führenden Nullen anzuzeigen. Beispiel: =TEXT(A1, "0000") für eine vierstellige Zahl.

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