Zahlen runden mit einem VBA-Makro

Mit VBA habe ich ein Formular für Prozentrechnung angelegt. Es liefert aber keine exakten Ergebnisse, sondern weist viele Stellen hinter dem Komma Abweichungen auf. Kann VBA die Ergebnisse runden und mit zwei Stellen hinter dem Komma anzeigen?

Leider gibt es in VBA keine Funktion RUNDEN wie in Excel selbst. Sie müssen also einen kleinen Umweg gehen, um Ihrem Formular das gewünschte Verhalten beizubringen. Eine fertige Lösung finden Sie auf der Heft-CD CHIP-Code RUNDEN.

Zunächst starten Sie den Visual-Basic-Editor und führen »Einfügen | Userform« aus, um Ihr Formular mit den Kombinationsfeldern, Schaltflächen und Bezeichnungsfeldern auszustatten. Danach wechseln Sie zum Projekt-Explorer und suchen im Abschnitt »Formulare« Ihr Formular. Klicken Sie mit der rechten Maustaste darauf und führen Sie »Code anzeigen« im Kontextmenü aus. Nun können Sie folgende Programmzeilen eingeben, um das Verhalten Ihres Formulars zu steuern.



Option Explicit
DefDbl 0K, P-Q
Private Sub CommandButton1_Click()
Dim p As Double
Dim q As Double
Dim k As Double
p# = CDbl(ComboBox1.Text)
q# = CDbl(ComboBox2.Text)
k# = p# * q# / 100
ComboBox3.Text = Format(k#, „#.00“)
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End



Das Makro bewirkt Folgendes: Von dem Arbeitsblatt in Excel aus startet zunächst Ihr Formular, indem Sie durch ein Makro den VBA-Befehl »UserForm1.Show« ausführen. Nach dem Klick auf »Berechnen« startet die Prozedur »CommandButton1_Click«. Nach der Variablendefinition lesen Sie die Werte aus den Eingabefeldern und wandeln die Zeichenketten in Zahlen um. Falls Sie Ihre Werte mit einem Komma als Dezimaltrennzeichen eingeben möchten, verwenden Sie die Funktion »CDbl« wie im Beispiel. Bei einem Punkt als Dezimaltrennzeichen nutzen Sie besser die Funktion »Val«.

Die Division durch 100 in der nächsten Berechnung bestimmt den gesuchten Prozentwert. Bei den Gleitkommaberechnungen können stets geringfügige Abweichungen in den letzten Ziffern auftreten. Wenn Sie die Werte nur anzeigen wollen, genügt es, die Zahl auf zwei Stellen hinter dem Komma zu formatieren. Das erledigt »Format« mit der Zahl und dem Formatcode als Argument. Beachten Sie den Punkt als Dezimaltrennzeichen im Formatcode. Falls Sie den Wert aber für Berechnungen brauchen, sollten Sie die Zahl tatsächlich runden. Dafür verwenden Sie die Funktion zur Typumwandlung auf Integer:



l = CLng(k# * 100) / 100



Vor der Typumwandlung multiplizieren Sie den Wert mit 100 und dividieren den Integerwert durch 100. So erzielen Sie das gewünschte Ergebnis.