VBA Zahl auf Viertel runden
#1
Hallo zusammen,

in meinem Code weise ich einem Label, eine Zahl aus einer Zelle zu, mit folgendem Code:
Code:
Label10.Caption = Format(Round(Worksheets("Tabelle1").Range("F14"), 2), "#,##0.00")
diese Zahl ist dadurch auf 2 Nachkommastellen gerundet. z.B. "9,41"
nun möchte ich aber, das diese Zahl auf Viertel gerundet wird.
In diesem Beispiel sollte dann 9,5 dran stehen.
Wie ist das via VBA möglich? Was muss ich an meinem Code ändern?
Vielen Dank für eure Hilfe
Gruß,
Philipp
Top
#2
Moin Phillipp!
In Excel gibt es VRUNDEN(),
in VBA:
Code:
Label10.Caption = Format(Application.MRound(Worksheets("Tabelle1").Range("F14"), 0.25), "#,##0.00")

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Hallo Ralf,

bei mir kommt folgende Fehlermeldung:
[img=822x294]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

Und wenn ich Application. eingebe, öffnet sich ja ein kleines Menü, in dem man auswählen kann, was nach dem Punkt kommt.
Da fehlt auch schon das .Mround.

Viele Grüße,
Philipp
Top
#4
Hallo Philipp,


hier mal eine klassische Methode:
Code:
= round(Wert*4,0)/4
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Lokdog
Top
#5
Moin!
Zitat:Und wenn ich Application. eingebe, öffnet sich ja ein kleines Menü, in dem man auswählen kann, was nach dem Punkt kommt.
Da fehlt auch schon das .Mround.
Du meinst die Intellisense, Philipp.
Es ist richtig, dass sie hier (wie in sehr vielen anderen Fällen) nicht aktiv ist.
Ändert aber nichts an der Tatsache, dass es funktioniert.
Zumindest ab Excel 2007.
Für ältere Versionen nimm die "klassische" Variante von Ego.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Hallo Ralf,

(11.08.2016, 18:03)RPP63 schrieb: Du meinst die Intellisense, Philipp.
Es ist richtig, dass sie hier (wie in sehr vielen anderen Fällen) nicht aktiv ist.

das funktioniert schon:    

Gruß Uwe
Top
#7
Ja klar, Uwe! 
Ich spare mir aber die .WorksheetFunction weil sie hier nicht notwendig ist.
Gleiches gilt übrigens auch für Application.Match()
Aber wem erzähle ich dies?  :21:

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#8
Hi Ralf,
(11.08.2016, 19:42)RPP63 schrieb: Ich spare mir aber die .WorksheetFunction ...

und damit eben auch die Intellisense.

Gruß Uwe
Top
#9
Die muss ich ich mir aber in sehr vielen Fällen sparen, Uwe.
Ich spare sie mir mir beim LateBinding, bei ungenauer Referenzierung, weil ich etwas aktives anspreche (ActiveSheet in PERSONAL.XLSB) usw.
Wenn Du es so meinst, dass eine Programmierung nur dann sinnvoll ist, wenn die Intellisense funktioniert, …
… dann müssen wir uns z.B. von Arrays verabschieden.
Aber ich weiß natürlich, dass Du es so nicht meinst.  Angel

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#10
Hallo Helmut,

wie immer hast du mir geholfen, Dankesehr! :)

Gruß,
Philipp
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste