Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1344to1348
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige