Wunsch – Brutto/Netto

Bei manchen Kalkulationen ist es das Ziel, entweder den Netto- oder den Bruttobetrag „glatt“ zu gestalten, also volle Euro ohne Cent. Oder aber auch einem Wunsch-Centbetrag. Mit einem kleinen Makro lässt sich das gut bewerkstelligen:

Glatte Beträge berechnen

Glatte Beträge berechnen

Dahinter 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 Spalten B:C etwas eingetragen wird, dann ändert sich entsprechend der Wert der Nachbarspalte automatisch. So ist es möglich, einen normal kalkulierten Netto-Wert in Spalte C einzutragen und dann zu überprüfen, ob der Brutto-Preis den Wünschen entspricht. Erforderlichenfalls ändere ich den Bruttopreis entsprechend ab, der Netto-Preis wird dann automatisch angepasst. Gleiches gilt, wenn Sie ausgehend von einem einen gegebenen Brutto-Preis einen möglichst „runden“ Netto-Preis erarbeiten wollen. Sie ändern den Netto-Preis in die eine oder andere Richtung auf den Wunschbetrag und der Brutto-Preis passt sich entsprechend an. Natürlich geht das auch mit den „berühmten“ 95 oder 99 Cent-Beträgen (nach dem Komma). Das können Sie in dieser Datei nachvollziehen. – Die Variable MwSt kann selbstredend auch durch eine Zelladresse „gefüllt“ werden.

▲ nach oben …

Ergänzung: Bei einer Eingabe der Preise von Hand kann es durchaus vorkommen, dass der „runde“ Wert ohne Nachkommastellen eingegeben wird. Wenn dann die Zelle nicht als Währung formatiert ist, sieht das nicht so schön aus, selbst wenn die Berechnung korrekt durchgeführt wird. Das wird mit dem folgenden Code verbessert.

Eine weitere Fehlermöglichkeit wird ausgeschaltet: Wenn eine Zelle in Spalte B oder in Spalte C gelöscht wird, dann kommt es im obigen Code zu einer Fehlermeldung, dass der Daten-Typ nicht passt. Auch diese Fehlermöglichkeit wird hier geblockt. In dem Fall werden Nullwerte eingetragen, die Sie aber per Zahlenformat ausblenden können.

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

▲ nach oben …

Dieser Beitrag wurde unter Code-Schnipsel, Mit VBA/Makro, Rechnen & Zahlen, Tipps und Tricks abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.