![]() |
Visual Basic --> Kommastellen
Hiho!
Möchte folgendes machen. Ich möchte alle Zahlen auf zwei Kommastellen reduzieren oder auffüllen. Die sollen aber nicht gerundet werden, sondern lediglich abgeschnitten. Also zB: 16,50789 = 16,50 (und NICHT 16,5 :D) Und, wenn ich nur 16 habe, soll dann 16,00 stehen! THX |
hi,
zahlenformat 0.000.000,00 verwenden |
Wie würde das denn genau aussehen, wenn ich eine Variable in nem label ausgebe? wie soll ich das dann schreiben? =) plz beispiel =)
|
Ev. hilft:
Zitat:
|
das würde dann also so aussehen müssen:
FormatNumber(LABELXY ,##) ?? =) oder mach ich das dann mit Nullen, wenn es um die Dezimalstellen geht? |
Also, ich hab da jetzt so ein kleines Prog geschrieben, damit ich das austesten kann! Folgendes hab ich geschrieben:
Private Sub cmdFormat_Click() Dim EZahl As Long EZahl = txtEingabe FormatNumber (EZahl = 0) Zahlenformat.lblAusgabe = EZahl End Sub und dabei rundet er mir. Ich hab das mit -1 und -2 ebenfalls versucht, also nicht nur mit Null, und er rundet mir auf eine Ganzzahl ohne Dezimalstellen. Was mach ich denn da noch falsch? =) |
ach ja, und mit 1 .. 2 hab ich es auch versucht. also egal wie viele dezimalstellen ich ihm angabe, dass ich haben will .. er rundet mir einfach auf eine ganzzahl .. RUNDET .. genau das was ich ned will :D
|
nur so ne frage: wofür brauchst du das?
|
hehe für meine projektarbeit in der schule, die ich bis nach ostern fertig haben muss. in dem programm geht es halt um preise und es gibt kaum preise mit 3 dezimalstellen. deshalb muss ich auf zwei abschneiden, weil kein schwein will mehr zahlen als es kostet :D deshalb nicht runden.
und das brauch ich halt sehr dringend und bald .. aba irgendwie hilft mir hier keiner so definitiv dass die sache mal geklärt wäre. kenn mich mit diesem formatbefehl halt einfach ned aus .. :) und synatx alleine hab ich ma selbst schon angesehen aba geholfen ned. |
ich bin grad am versuchen. is zwar ziemlich umständlich aber imm großen und gnze funzt es schon.
|
so versuche es mal damit:
Code:
Option Explicit |
ja die sache is halt die .. dass ich 93 preise habe die alle auf zwei dezimalstellen abgeschnitten gehören. dsehalb sollte s ned allzu viel aufwändig sein .. wei ldas coding sonst .. muha .. einfach zu viel wird :D
nur ich kann mit dem prog ned großartig weiter machen bzw. will es ned total durchprogrammieren, wenn ich dann vielleicht alle ausgaben umschreiben muss wegen diesem format befehl. probier zwar auch schon seit geraumer zeit mit diesem format befehl rum, aber es funktioniert ned so .. wies sollte :D er rundet eben auf ne ganzzahl. |
wie gefällt dir obere möglichkeit?
|
hehe ist echt süß ... aba wenn ich das ganze für 93 beträge mach schau ich alt aus :D
|
warum bitte?
mach doch ne for-schleifen oä. und bei 93 einträgen dauerts ned mal lang :D |
ajo das eine else kannst ausse nehmen
|
na ja .. also mir wäre so eine simple anweisung in der ausgabe lieber :D
sowas wie lblausgabe=~irgendeine formatierende anweisung~ Variable sowas wär fein :D aba mit so ner schleife etc. kann ich alles jetzt umprogrammieren und ich hab nimma so viel zeit für dieses projekt dass ich da von neu anfange :) |
ja und wo soll ich das einbauen?
weil die beträge werden in einem anderen formular eingegeben als sie ausgegeben werden. und die beträge sind alle in variablen drinnen .. und ich habe insgesamt .. 20 formulare wo beträge eingegeben werdn :D |
aso na dann mach einfach ne funktion draus.
|
und wie mach ich die funktion? lol ich bin ein total noob was visual basic angeht. ich mein ich versuchs halt immer so einfach wie möglich zu programmieren, auch wenn es pfuschig is :D aba meinem prof is egal wie ichs programmiere nur funken soll es
nur wie mach ich des mit ner funktion? hab ja 93 verschiedene variablen :D |
wart ein wenig ich mach dir ein bespiel programm. hab heut an guten tag :D
|
hehe das is lieb .. brauch nämlich echt hilfe dabei. hab das prog zwar schon jmd gegeben dass er mir des mitn format dings macht aba ich glaub das krieg ich nimma rechtzeitig :D
|
so ich hoffe das passt so.
|
okay danke. jezz müsst ich dein coding nur noch verstehen und wissen wie ich des bei meinem prog mache :P
|
also ich weiß jezz ned wirklich .. wie du das meinst .. was du geschrieben hast:
'statt txteingabe.text kannst du jede beliebige variable nehmen. 'und die ifabfrage fällt dann natürlich auch weg in wie fern fällt die ifabfrage weg? ... in der if abfrage hast du ja das textfeld reingeschrieben :D |
aah verstehe :D
|
Zitat:
|
ein problem habe ich allerdings.
dass is jezz ne funktion für ein ergebnis. und die funktion hat ne variable die ergebnis heißt. aba ich kann ned sagen .. dass er in fünf labels die variable ergebnis ausgeben soll .. weil dann häte ich ja nur eine eingabe und dem is ja ned :D verstehst du? *G* also ich kann ja ned nur mit einer variable arbeiten ..wenn ich max. 93 variablen habe .. sprich .. 93 formatierte zahlen .. und EINE funktion mit EINER variable .. *g* |
dann schreibs um das er dir die var ausgeben soll die du ihm reingibst ^^.
|
hiho!!
funktioniert funkt ... vorausgesetzt die variablen sind als DOUBLE deklariert .. :) mfg und danke |
Da gibt es doch nen speziellen Datentyp CURRENCY den du verwenden kannst. Hat per default nur 2 Nachkommastellen.
Dim EineZahl As Currency EineZahl = 9.8765432 Debug.Print EineZahl sollte 9.87 rauskommen. Alternative: Private Function Abschneid(Was As Double) As Double Abschneid = Val(Left$(Trim(Str(Was)), InStr(1, Trim(Str(Was)), ".") + 2)) End Function Aufruf: Debug.Print Abschneid(9.87654321) Ausgabe: 9.87 |
mh ok das is kürzer :D
|
RegExp kann VB ja leider nicht.. sonst wärs ein noch kürzerer Klammerwald...
|
muhaha ich brauch die variablen die ich auf zwei kommastellen will nur auf currency deklarieren und das wars?
füllt er mir die dann auch auf zwei kommastelen auf, wenn die zweite kommastelle eine 0 ist? =) das wär nämlich auch sehr wichtig .. sonst hats keinen sinn :) |
wenn du unbedingt 2 Nachkommastellen brauchst machst du nen string aus der zahl und zwar..
Text = Format(Zahl,"0.00") Das gibt dir dann die Zahl als Text immer mit 2 Nachkommastellen. Hab nachgeschaut.. Currency limitiert auf 4 Nachkommastellen. |
okayy .. danke :)
|
Den Umweg über den Text braucht man nicht
einfach: Zahl1=format(Zahl,"0.00") wobei Zahl1 derselbe Datentyp wie Zahl ist |
@reemev
wenn du 2.3 als 2.30 ausgeben willst musst den umweg über den typ string nehmen. Weil bei Zahl schneidet vb die nullen ja weg bei der ausgabe. |
Stimmt, hast recht. Wenn man die neue Zahl als Variant definiert, müsste es aber funktionieren. Macht aber keinen Unterschied mehr, es sei denn, man möchte mit den neuen Zahlen weiterrechnen(?).
|
ja ich hab in dem prog insgesmt 92 variablen. wenn ich diese format anweisung nehme .. so wie du sie da hingeshrieben hast .. müsste ich ja dann nochmal extra für jede variable ne zweite machen (so hab ichs versatnden)
aba natürlich rechne ich danach mit den zahlen weiter. und da sollten halt alle in nem kaufmännischen format sein. weil es ein scheiß is .. wenn die zahlen dann mal eine haben und dann mal zwei stellen und das sieht dann blöd aus und dann stehen die zehner mal bei den hunderten und umgekehrt und das soll schon untereinander immer die gleiche stelle stehen :D also auffüllen auf zwei und abschneiden. das es halt immer zwei sind, egal obs 50 euro sind oder 50,678 .. es müssen zwei sein :D und darf ned gerundet werden, weil das ja ne preis verfälschung wäre, wenn ich statt 4,446 (4,44) aufeinmal 4,45 zahl :D |
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag