AW: Berechnung bei Eintrag
22.06.2007 16:45:00
ingUR
Hallo, Gunnar,
das war mein Kopierfehler, denn während ich in der WorkSheet_Change-Prozedur den With Target ... End With-Block einsetze, in demm jeder führende Punkt durch den Objektbezeichner Target ergänzt wird, habe ich diese Technik nicht in der WorkSheet_ChangeSelection verwendet, dennoch unzulässigerweise die abgekürzte Schreibweise genutzt.
Richtig ist also:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Target.Column = 5 Or Target.Row
oder
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
with Target
If Not .Column = 5 Or .Row
Zur Umsetzung der Saldierung in der Zeile 30, besteht die Möglichkeit, bei Änderung der Zelle, den UST-Betrag in der Zeile zu Addieren bzw. zu subtrahieren, je nach "X":
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngC As Range, ustF As Double, Betrag As Double
'Exit Sub
With Target
If Not .Column = 5 Then Exit Sub
If .Value = prevValue Then Exit Sub
If (.Value = " " Or .Value = "") And prevValue = "x" Then
ustF = 1 / (1 + USTP / 100)
For Each rngC In Range("F" & .Row & ":AJ" & .Row)
If Not IsEmpty(rngC) Then
Betrag = rngC.Value
rngC = rngC * ustF
Cells(30, rngC.Column) = Cells(30, rngC.Column) + (rngC - Betrag)
End If
Next rngC
ElseIf UCase(.Value) = "X" And prevValue = "" Then
ustF = (1 + USTP / 100)
For Each rngC In Range("F" & .Row & ":AJ" & .Row)
If Not IsEmpty(rngC) Then
Betrag = rngC.Value
rngC = rngC * ustF
Cells(30, rngC.Column) = Cells(30, rngC.Column) + (rngC - Betrag)
End If
Next rngC
End If
prevValue = .Value
End With
End Sub
Gruß,
Uwe