Wunsch – Brutto/Netto

Bei manchen Kalku­la­tio­nen ist es das Ziel, entwed­er den Net­to- oder den Brut­to­be­trag „glatt” zu gestal­ten, also volle Euro ohne Cent. Oder aber auch einem Wun­sch-Cent­be­trag. Mit einem kleinen Makro lässt sich das gut bew­erk­stel­li­gen:

Glatte Beträge berechnen

Glat­te Beträge berech­nen

Dahin­ter steckt dieses kleine Makro:

Option Explicit

Private Sub WorkSheet_Change(ByVal Target As Range)
   Dim MwSt As Single
   Dim Ze As Integer
 
   MwSt = 0.19
   If Target.Column = 2 Or Target.Column = 3 Then
      On Error GoTo ErrorHandler
      Ze = Target.Row
      Application.EnableEvents = False
      If Target.Column = 2 Then
         Cells(Ze, 3) = CCur(Target / (1 + MwSt))
      Else
         Cells(Ze, 2) = Target + Target * MwSt
      End If
   End If

ErrorHandler:
   Application.EnableEvents = True
End Sub

Wenn in eine der Spal­ten B:C etwas einge­tra­gen wird, dann ändert sich entsprechend der Wert der Nach­barspalte automa­tisch. So ist es möglich, einen nor­mal kalkulierten Net­to-Wert in Spalte C einzu­tra­gen und dann zu über­prüfen, ob der Brut­to-Preis den Wün­schen entspricht. Erforder­lichen­falls ändere ich den Brut­to­preis entsprechend ab, der Net­to-Preis wird dann automa­tisch angepasst. Gle­ich­es gilt, wenn Sie aus­ge­hend von einem einen gegebe­nen Brut­to-Preis einen möglichst „run­den” Net­to-Preis erar­beit­en wollen. Sie ändern den Net­to-Preis in die eine oder andere Rich­tung auf den Wun­sch­be­trag und der Brut­to-Preis passt sich entsprechend an. Natür­lich geht das auch mit den „berühmten” 95 oder 99 Cent-Beträ­gen (nach dem Kom­ma). Das kön­nen Sie in dieser Datei nachvol­lziehen. – Die Vari­able MwSt kann selb­stre­dend auch durch eine Zel­ladresse „gefüllt” wer­den.

▲ nach oben …

Ergänzung: Bei ein­er Eingabe der Preise von Hand kann es dur­chaus vorkom­men, dass der „runde” Wert ohne Nachkom­mas­tellen eingegeben wird. Wenn dann die Zelle nicht als Währung for­matiert ist, sieht das nicht so schön aus, selb­st wenn die Berech­nung kor­rekt durchge­führt wird. Das wird mit dem fol­gen­den Code verbessert.

Eine weit­ere Fehler­möglichkeit wird aus­geschal­tet: Wenn eine Zelle in Spalte B oder in Spalte C gelöscht wird, dann kommt es im obi­gen Code zu ein­er Fehler­mel­dung, dass der Dat­en-Typ nicht passt. Auch diese Fehler­möglichkeit wird hier geblockt. In dem Fall wer­den Null­w­erte einge­tra­gen, die Sie aber per Zahlen­for­mat aus­blenden kön­nen.

Private Sub WorkSheet_Change(ByVal Target As Range)
   Static MwSt As Single
   MwSt = 0.19
   
   If Target.Column = 2 Or Target.Column = 3 Then
      Application.EnableEvents = False
      With Target
         If IsNumeric(Target) Then
            If .Column = 2 Then
               .Value = CCur(Target)
               .Offset(0, 1) = CCur(Target / (1 + MwSt))
            Else
               .Value = CCur(Target)
               .Offset(0, -1) = CCur(Target * (1 + MwSt))
            End If   'Column = 2
         End If   'IsNumeric
      End With
   End If   'Column 2 Or 3

ErrorHandler:
   Application.EnableEvents = True
End Sub
[NachOben­Let­zte Verweis=„CS: Brut­to-Net­to Glat­te Sum­men”]
Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Rechnen & Zahlen, Tipps und Tricks abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.