AW: Dimensionen Nutzen
14.10.2022 13:49:20
Yal
Hallo Lefty,
bei Dimensionierung ist gemeint, dass man damit sagt, ob diese Variable ein Integer, ein Long, ein String, ein Double (mit Nachkommastellen) oder ein bestimmte Objekt. Eine Variable zu definieren, ohne sie zu dimensionieren, ist auch möglich. Man verwendet dabei trotzdem "Dim"
Wichtig ist nur wie es danach verwendet wird. Eine Variable ist ein Speicher für eine Werte (Zahl, Text oder Objekt) den ich später oder mehrmals wiederverwenden möchte. In deinem Fall würde ich "MwSt" als Zahl mit Nachkommstellen (Double) dimensionieren, weil Du diese zweimal in deiner Rechnung einsetzt. So kann man die Berechnung schlanker und nachvollziehbarer gestalten:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MwSt As Double
'VkBrutto / (1+MwSt%)*MwSt%
If Not Intersect(Target, Range("M15,N15")) Is Nothing Then 'nur bei Änderung in der Zelle M15 oder N15
MwSt = Range("N15").Value
Range("O15").Value = Round(Range("M15").Value * MwSt / (1 + MwSt), 2)
End If
End Sub
Variable sind nach dem Motto so viel wie nötig, so wenig wie möglich zu verwenden. Eine Ausnahme: mit Variable kannst Du besser den Verlauf des Codings nachvollziehen, wenn Du den Code in Schritt-Modus (F8) mit offenen Lokalfenster (Ansicht, Lokalfenster) durchläufst. So macht es manchmal Sinn, mehr Variablen zu definieren/verwenden als notwendig wäre.
Man hätte in deinem Beispiel Eingangswert und Ergebnis zwischenspeichern können:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MwSt As Double
Dim VkBrutto As Double
Dim Ergebnis As Double
'VkBrutto / (1+MwSt%)*MwSt%
If Not Intersect(Target, Range("M15,N15")) Is Nothing Then 'nur bei Änderung in der Zelle M15 oder N15
MwSt = Range("N15").Value
VkBrutto = Range("M15").Value
Ergebnis = VkBrutto * MwSt / (1 + MwSt)
Ergebnis = Round(Ergebnis, 2)
Range("O15").Value = Ergebnis
End If
End Sub
Setzt einen Breakpoint (F9) auf der Zeile mit dem If. Es wird den Lauf stoppen. Öffne den Lokalfenster und lasse Schritt für Schritt mit F8 weiterlaufen. Beobachte, welche Wert die Variable nach der gelaufenen Zeile annimmt.
VG
Yal