![]() |
||
![]() |
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 hCHIP-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Σchs-ten 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 Typ-umwandlung 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. |
![]() |