Länge eines Strings
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 schreiben
Antwort 1 von riese vom 05.08.2020, 10:17 Options
Das geht ganz einfach:
Dim nLength as Integer
Dim sText As String
sText = "Hallo"
nLength = Len(sText) 'ergibt in diesem Fall 5
adam
Antwort 2 von Teerbaby vom 05.08.2020, 10:20 Options
noch einfacher wäre wahrscheinlich die Format-Funktion zu benutzen
Bsp:
Format("1234","000000")
Ausgabe: 001234
Antwort 3 von nighty vom 05.08.2020, 10:21 Options
hi sphaze
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 Sub
Antwort 4 von sphaze vom 05.08.2020, 10:32 Options
Vielen Dank! Da funktioniert die eine Lösung besser als die andere. Einfach klasse!
Antwort 5 von Saarbauer vom 05.08.2020, 10:35 Options
Hallo,
hiermit wären die führenden nullen mit eingebunden
nLength = REPT(0,6-LEN(sTex]) & sText
Gruß
Helmut
Antwort 6 von rainberg vom 05.08.2020, 11:19 Options
Hallo Helmut,
das stimmt nicht ganz :-))
so wär's richtig
nLenght = WorksheetFunction.Rept(0, 6 - Len(sText)) & sText
Gruß
Rainer
Antwort 7 von sphaze vom 05.08.2020, 11:23 Options
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?
Antwort 8 von rainberg vom 05.08.2020, 12:35 Options
Hallo,
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 vom 05.08.2020, 12:55 Options
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
Antwort 10 von sphaze vom 05.08.2020, 13:11 Options
Hab das jetzt so gelöst:
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 vom 05.08.2020, 13:28 Options
Update: Lol, jetzt liefert er bei der Selection auch einen Error...