Zahlen mit führenden Nullen

Hallo,

hat jemand eine Idee wie man Zahlen z.B. immer 3 stellig darstellen kann. Also „002“, „013“.

Besten Dank.

Gruß
Gunny

hat jemand eine Idee wie man Zahlen z.B. immer 3 stellig
darstellen kann. Also „002“, „013“.

Hi Gunter,
in VbA z.B. so:

for N=1 to 10
 msgbox right("00" & N,3)
next n

Gruß
Reinhard

Hallo Gunny,

viele Wege führen nach Rom :smile:
Um eine Zahl im Format mit 002 oder 013 anzuzeigen, muss sie als Zeichenkette vorliegen!

Du koenntest folgende Wege einschlagen :smile:

Variante 1:

Public Function Convert(ByRef vRet As String) As Boolean
 If Len(vRet) \> 3 Or Not IsNumeric(vRet) Then Exit Function
 Convert = True
 Select Case Len(vRet)
 Case 1
 vRet = "00" & vRet
 Case 2
 vRet = "0" & vRet
 End Select
End Function


Variante 2:

Dim vRet as String
vret=Format$(DeineZahl, "000")

Variante 1:

Es koennen max. Zahlen bis 999 übergeben werden! Sie dürfen aber nur max. 3 stellig sein. Das wiederrum besagt das du keine negativen Zahlen übergeben kannst! Ok das koennte man noch aendern :smile:
Desweiteren bekommst du als Result True oder False geliefert, was besagt ob die Konvertierung erfolgreich war :smile:

Ein Aufruf koennte wiefolgt ausschauen

Dim vRet as String
vRet=cstr(DeineZahl)
If Convert(vRet) then
 'Konvertierung erfolgreich!
else
'Konvertierung fehlgeschlagen 
End if 

Variante 2:

Hierbei wird + und minus beruecksichtigt. Sie ist schneller als Variante 1. Nachteil ist aber, wenn du eine Zahl übergibst die mehr als 3 Zeichen hat, so bekommst du sie auch zurueck :smile:

Bsp. Übergabe

1 -> 001
12 -> 012
123 -> 123
4567 -> 4567 etc.

Wie du siehst führen mehrere Wege nach Rom :wink:

MfG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

in VbA z.B. so:

for N=1 to 10
msgbox right(„00“ & N,3)
next n

wirklich? :smile: In VB6 müsste ich die Zahl in einen String umwandeln.

for N=1 to 10
 msgbox right("00" & Cstr(N),3)
next n

Gruß, Rainer

Hallo Alex,

vielen Dank.
Habe Variante 2 gewählt, funktioniert bestens.

Danke auch an die Andern.

Gruß
Gunter

Variante 2:

Hierbei wird + und minus beruecksichtigt. Sie ist schneller
als Variante 1. Nachteil ist aber, wenn du eine Zahl übergibst
die mehr als 3 Zeichen hat, so bekommst du sie auch zurueck :smile:

Bsp. Übergabe

1 -> 001
12 -> 012
123 -> 123
4567 -> 4567 etc.

Wie du siehst führen mehrere Wege nach Rom :wink:

MfG Alex

Hallo,

wirklich? :smile: In VB6 müsste ich die Zahl in einen String
umwandeln.

Konvertiert der Operator „&“ eine Variable in VB6 nicht automatisch in einen String um?

for N=1 to 10
msgbox right(„00“ & Cstr(N),3)
next n

Um noch was produktives beizutragen, hier eine kleine function, die je nach Parameter Zahlen mit beliebiger Anzahl führender Nullen ausgibt:

function GetNumber(Stellen as Integer, Number as Integer) \_
 as String
 dim KleinerNull as Boolean
 dim hlpStr as String

 if Number 

Gruß,
AlexR
1 Like

Hi,

Konvertiert der Operator „&“ eine Variable in VB6 nicht
automatisch in einen String um?

???
Ich hab’s mal versucht und …

Private Sub Command1\_Click()
 Dim a As String, e As String
 Dim b As Integer
 a = "2"
 b = 3
 e = a & b
End Sub

… läuft tatsächlich! :smile: e enthält „23“

Danke, das war mir neu, ich habe mit einem Fehler gerechnet!

Gruß, Rainer

Private Sub Command1_Click()
Dim a As String, e As String
Dim b As Integer
a = „2“
b = 3
e = a & b
End Sub

… läuft tatsächlich! :smile: e enthält „23“

Danke, das war mir neu, ich habe mit einem Fehler gerechnet!

Hallo Rainer,

Sub tt2()
Dim a As String, b As String
a = „2“
b = „3“
MsgBox a * b 'Ergebnis=6
End Sub

zeigt schon daß Excel mitdenkt, allerdings muß man all das einzeln mal austesten, weil man nie genau weiß in welcher Konstellation, gerade bei automatischen Typumwandlungen, das gewünschte Ergebnis kommt oder der Debugger.

Insofern war deine Erwartung eines Fehlers halt dummerweise die falsche Seite der 50/50-Chance-Münze, aber sehr berechtigt.

Gruß
Reinhard

Gruß, Rainer

Hallo Reinhard,

Sub tt2()
Dim a As String, b As String
a = „2“
b = „3“
MsgBox a * b 'Ergebnis=6
End Sub

*Kopfschüttel* Ich wäre nie darauf gekommen, so etwas zu versuchen.

zeigt schon daß Excel mitdenkt, allerdings muß man all das
einzeln mal austesten, weil man nie genau weiß in welcher
Konstellation, gerade bei automatischen Typumwandlungen, das
gewünschte Ergebnis kommt oder der Debugger.

Insofern war deine Erwartung eines Fehlers halt dummerweise
die falsche Seite der 50/50-Chance-Münze, aber sehr
berechtigt.

*gg* Das ist nicht schlimm, ich wollte nur helfen. Mit dem Irrtum kann ich leben.

Ich bin recht überrascht, ich kann aber auch nicht sagen, daß mir das gefallen würde. Das kann doch unerwartete Ergebnisse liefern! Da tippt man etwas falsch, VB rät was wohl gemeint war, irrt sich dabei und ich bekomme ein unverständliches Ergebnis.

Gruß, Rainer

Hallo Reinhard, Rainer,

Wieso solch eine Diskussion?
Habt ihr euch schon einmal gefragt, warum zum Bsp. VB
CINT, CLNG, VAL etc. als Befehle herausgebracht hat?

Bedenkt ihr bitte auch das sowas schnell schief gehen kann und der Übersichtlichkeit nicht gerade fördernd ist?

Schaut euch mal den Stack und den Heap an! Was macht eine Variable wie. Was genau passiert bei diesen Vorgaengen etc. :s

MfG Alex