Supportnet / Forum / Tabellenkalkulation
Länge eines Strings
Frage
Hi Leute,
da mir hier schon letztes mal sehr kompetent geholfen wurde, stelle ich hier erneut eine Frage. Ich les mit VBA aus einer Zelle einen String aus, der aus Zahlen besteht (z.B. 1234). Im Optimalfall steht in der Zelle aber immer eine sechsstellige Zahl (z.B. 001234). Ist sie wie vorhin nur vier stellig, muss ich vorne zwei Nullen anfügen.
Mein Problem ist: Wie finde ich heraus, ob mein String vierstellig oder sechsstellig ist?
Danke im Voraus!
Antwort 1 von riese
Das geht ganz einfach:
Dim nLength as Integer
Dim sText As String
sText = "Hallo"
nLength = Len(sText) 'ergibt in diesem Fall 5
adam
Dim nLength as Integer
Dim sText As String
sText = "Hallo"
nLength = Len(sText) 'ergibt in diesem Fall 5
adam
Antwort 2 von Teerbaby
noch einfacher wäre wahrscheinlich die Format-Funktion zu benutzen
Bsp:
Ausgabe: 001234
Bsp:
Format("1234","000000")Ausgabe: 001234
Antwort 3 von nighty
hi sphaze
fuer vba ein beispiel
gruss nighty
fuer vba ein beispiel
gruss nighty
Sub Abgleich()
If Len(Cells(1, 1)) < 6 Then Cells(1, 1) = Mid("000000", 1, 6 - Len(Cells(1, 1))) & Cells(1, 1)
End SubAntwort 4 von sphaze
Vielen Dank! Da funktioniert die eine Lösung besser als die andere. Einfach klasse!
Antwort 5 von Saarbauer
Hallo,
hiermit wären die führenden nullen mit eingebunden
nLength = REPT(0,6-LEN(sTex]) & sText
Gruß
Helmut
hiermit wären die führenden nullen mit eingebunden
nLength = REPT(0,6-LEN(sTex]) & sText
Gruß
Helmut
Antwort 6 von rainberg
Hallo Helmut,
das stimmt nicht ganz :-))
so wär's richtig
nLenght = WorksheetFunction.Rept(0, 6 - Len(sText)) & sText
Gruß
Rainer
das stimmt nicht ganz :-))
so wär's richtig
nLenght = WorksheetFunction.Rept(0, 6 - Len(sText)) & sText
Gruß
Rainer
Antwort 7 von sphaze
Hi Leute,
ich seh gerade, dass das Problem nicht wirklich gelöst ist. In VBA hängt er zwar zwei Nullen vor vierstellige Zahlen, aber wenn er es dann wieder in ein Sheet schreibt haut Excel die Nullen einfach weg... was soll bitte das?
ich seh gerade, dass das Problem nicht wirklich gelöst ist. In VBA hängt er zwar zwei Nullen vor vierstellige Zahlen, aber wenn er es dann wieder in ein Sheet schreibt haut Excel die Nullen einfach weg... was soll bitte das?
Antwort 8 von rainberg
Hallo,
wie wär's damit?
Gruß
Rainer
wie wär's damit?
Option Explicit
Sub Abgleich()
With Cells(1, 1)
.NumberFormat = "000000"
.Value = Cells(1, 1).Value
End With
End Sub
Gruß
Rainer
Antwort 9 von Flupo
Hauptproblem in der Angelegenheit ist die Tatsache, dass Excel Zahlen anders behandelt als Text.
Die Lösungsvorschläge mit dem Zahlenformat funktionieren nur solange, wie auch eine Zahl in der Zelle steht.
Macht man aus der Zahl einen String (indem man die Zelle als "Text" formatiert, oder ein ' vor die Zahl schreibt), sind die führenden Nullen weg.
Du solltest daher sicher stellen, dass in den Zellen Strings stehen (formatiere die Spalte als "Text") und diese dann über Stringmanipulationen richtig formatieren. Die Funktionen für Zeichenketten (len(), left(), right()...) funktionieren dann auch.
Gruß Flupo
Die Lösungsvorschläge mit dem Zahlenformat funktionieren nur solange, wie auch eine Zahl in der Zelle steht.
Macht man aus der Zahl einen String (indem man die Zelle als "Text" formatiert, oder ein ' vor die Zahl schreibt), sind die führenden Nullen weg.
Du solltest daher sicher stellen, dass in den Zellen Strings stehen (formatiere die Spalte als "Text") und diese dann über Stringmanipulationen richtig formatieren. Die Funktionen für Zeichenketten (len(), left(), right()...) funktionieren dann auch.
Gruß Flupo
Antwort 10 von sphaze
Hab das jetzt so gelöst:
Und anschließend dann so:
Nun stehen fast immer zwei Nullen davor, Wenn meine "data" aber mit einem Buchstaben beginnt (z.B. A123), fehlen die zwei Nullen. Wieso mach er es dann nicht :/
Columns("I:I").Select
Selection.NumberFormat = "@"
Und anschließend dann so:
data = Format(data, "000000")
Nun stehen fast immer zwei Nullen davor, Wenn meine "data" aber mit einem Buchstaben beginnt (z.B. A123), fehlen die zwei Nullen. Wieso mach er es dann nicht :/
Antwort 11 von sphaze
Update: Lol, jetzt liefert er bei der Selection auch einen Error...

