Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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)
Antworten 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
Antworten 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
Antworten 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)
Antworten Top
#6
Hallo Ralf,

(11.08.2016, 17: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
Antworten 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)
Antworten Top
#8
Hi Ralf,
(11.08.2016, 18:42)RPP63 schrieb: Ich spare mir aber die .WorksheetFunction ...

und damit eben auch die Intellisense.

Gruß Uwe
Antworten 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)
Antworten Top
#10
Hallo Helmut,

wie immer hast du mir geholfen, Dankesehr! :)

Gruß,
Philipp
Antworten Top


Gehe zu:


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