Moin, moin,
in der Hoffnung dass du das vielleicht hier nochmal siehst / irgendwie eine Meldung bekommst...? Wäre enorm wichtig, weil ich leider nicht weiß, wie ich den Code der nach wie vor EINWANDFREI FUNKTIONIERT so umbaue dass er nicht als "Worksheet_Change" Ereignis fungiert, sondern doch als SUB? Ich meine irgendwann hättest du mich mal drauf hingewiesen dass das auch "irgendwie" ? geht?
Ich weiß allerdings nicht wie ich den u.g Code so umbaue weil mir das "Target" eigentlich immer Probleme bereitet :S
Also der Code / der inhaltliche Sinn muss auf jeden Fall unverändert bleiben. Jetzt komme ich aber defintiv an den Punkt wo eine SUB an der Stelle angebrachter wäre.
Würdest du mir vielleicht ein aller letztes Mal helfen? :´( Tut mir ohnehin ja schon Leid nocheinmal hier schreiben zu müssen aber du bist eigentlich so meine einzige Hoffnung :S
Private Sub Worksheet_Change(ByVal Target As Range)
Dim spalte As Long
Dim zeilesum As Long
Dim versatz As Long
Dim letztezeile As Long
Dim zeile As Long
Dim summe As Long
Dim l As Long
Dim vorletztespalte As Long
vorletztespaltefipa = Cells(3, Columns.Count).End(xlToLeft).Column - 1
zeilesum = Application.Match("Summe", ActiveSheet.Columns(1), 0)
'nur wenn eine Zelle geändert wurde ausführen
If Target.Count = 1 Then
'prüfen ob Spalte E bis M
If Not Intersect(Target, ActiveSheet.Columns("E:AV")) Is Nothing Then
letztezeile = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
'nur wenn ab Zeile 5 bis Zeile vor der Summe
If Target.Row > 4 And Target.Row < zeilesum Then 'hier noch die Änderung zur Prüfung
For zeile = 5 To letztezeile Step 4
Cells(zeile + 1, 2).Value = Application.WorksheetFunction.Sum(Range(Cells(zeile, 5), Cells(zeile + 1, 32)))
Next
'Summe in Spalte D
If (Target.Row Mod 4) <> 0 Then Cells(Target.Row, 4).Value = Application.WorksheetFunction.Sum(Range(Cells(Target.Row, 5), Cells(Target.Row, 32)))
'jetzt summieren
'jetzt die Spalte summieren
spalte = Target.Column
summe = 0
'jeden vierten wert addieren
versatz = (Target.Row Mod 4)
If versatz = 0 Then
Else
For l = 4 + versatz To zeilesum - 1 Step 4
summe = summe + ActiveSheet.Cells(l, spalte)
Next l
End If
'jetzt eintragen
versatz = (Target.Row Mod 4 - 1)
If versatz = -1 Then
Else
ActiveSheet.Cells(zeilesum + versatz, spalte) = summe
End If
'Gesamtsumme aber in Spalte B
ActiveSheet.Cells(zeilesum + 1, 2) = Application.WorksheetFunction.Sum(Range(Cells(5, 2), Cells(zeilesum - 1, 2)))
'Spaltensummen
ActiveSheet.Cells(zeilesum, 4) = Application.WorksheetFunction.Sum(Range(Cells(zeilesum, 5), Cells(zeilesum, vorletztespaltefipa)))
ActiveSheet.Cells(zeilesum + 1, 4) = Application.WorksheetFunction.Sum(Range(Cells(zeilesum + 1, 5), Cells(zeilesum + 1, vorletztespaltefipa)))
ActiveSheet.Cells(zeilesum + 2, 4) = Application.WorksheetFunction.Sum(Range(Cells(zeilesum + 2, 5), Cells(zeilesum + 2, vorletztespaltefipa)))
End If
End If
End If
End Sub
|