![]() |
||
![]() |
Zahlen runden mit einem VBA-MakroMit 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. 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. |
![]() |