Hallo, welche Erweiterung an diesem Programm müsste ich machen, dass es mit jedem Tastendruck eine Zwischensumme von der Spalte K berechnet, jedoch auf der rechten Nebenspalte, also L.
Also nochmal ich habe eine Rechnungsformular zu erstellen in Excel, dabei sollen Werte eingegeben und ausgerechnet werden, diese ausgerechneten Werte sollen auf Button klick zu einer Teilsumme ausgerechnet werden un in der Nebenspalte (L) ausgegeben werden, direkt neben dem Ende der eingegebenen Werte.
Danach soll es möglich sein weitere Werte einzugeben und von diesen Werten anschließend wieder auf Button klick eine Teilsumme auszurechnen ohne die zuvor eingegebenen nochmals mitzuaddieren. Dieser Vorgang soll immer wiederholbar sein. Wer kann mir dabei helfen, die folgende Prozedur zu verändern?
sub CommandButton1_Click()
Dim letzteZeile As IntegerConst Rechnungsblatt As String = "Rechnung"Const Spalte As String = "K"Const ersteMglZeile As Integer = 2Const letzteMglZeile As Integer = 15With Worksheets(Rechnungsblatt) If .Range(Spalte & letzteMglZeile) = „“ Then letzteZeile = .Range(Spalte & letzteMglZeile).End(xlUp).Row Else letzteZeile = letzteMglZeile End If .Range(Spalte & CStr(letzteZeile + 1)).Formula = _ „=Sum(“ & Spalte & ersteMglZeile & „:“ & Spalte & letzteZeile & ")"End With
End Sub
Danke im voraus für eure Hilfe
Hallo Daniel,
das von mir modifizeirte Makro
Private Sub CommandButton1\_Click()
Dim letzteZeile As Integer, letzteSumme As Integer
Const Rechnungsblatt As String = "Rechnung"
Const Spalte As String = "K"
Const SpalteSumme As String = "L"
Const ersteMglZeile As Integer = 2
Const letzteMglZeile As Integer = 15
With Worksheets(Rechnungsblatt)
If .Range(Spalte & letzteMglZeile) = "" Then
letzteZeile = .Range(Spalte & letzteMglZeile).End(xlUp).Row
letzteSumme = .Range(SpalteSumme & letzteMglZeile).End(xlUp).Row
Else
letzteZeile = letzteMglZeile
letzteSumme = .Range(SpalteSumme & letzteMglZeile).End(xlUp).Row
End If
.Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
"=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
End With
End Sub
produziert folgendes Ergebnis:
Tabellenblattname: Rechnung
K L
1 Betrag Teilsumme
2 100
3 200
4 300
5 600 1200
6 100
7 120 220
8 230
9 450
10 345 1025
11 200 200
Benutzte Formeln:
L5: =SUMME(K2:K5)
L7: =SUMME(K6:K7)
L10: =SUMME(K8:K10)
L11: =SUMME(K11:K11)
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo danke für den Vorschlag, jetzt muss ich allerdings nochmal um eine Erweiterung fragen, wie kann ich es anstellen, dass es dabei die Nullen nicht beachtet, d.h. immer nach ganzen Zahl das Ergebnis ausgibt, mein Problem ist nämlich, dass ich die Spalte Betrag formatieren musste mit =Summe(H * I) und wenn ich nun den Button klicke, dass es mir die Zwischensumme berechnet, gibt das Programm mir das Ergebnis ganz unten am Ende der Formation aus, da durch die Formation lauter Nullen dastehen.
deshalb wäre es angebracht, das Programm so zu verändern, dass es Nullen nicht beachtet und hinter den zu summierenden ganzen Zahlen die Zwischensumme ausgibt.
gruß Daniel
Hallo Daniel,
folgende etwas radikalere Anpassung überspringt 0-Werte in den unteren Zeilen von Spalte K.
Private Sub CommandButton1\_Click()
Dim letzteZeile As Integer, letzteSumme As Integer, Zelle As Range, i As Integer
Const Rechnungsblatt As String = "Rechnung"
Const Spalte As String = "K"
Const SpalteSumme As String = "L"
Const ersteMglZeile As Integer = 2
Const letzteMglZeile As Integer = 15
With Worksheets(Rechnungsblatt)
Set Zelle = .Range(Spalte & letzteMglZeile)
If .Range(Spalte & ersteMglZeile).Value = 0 Then Exit Sub 'noch keine Werte eingegeben
If .Range(Spalte & letzteMglZeile).Value \> 0 And .Range(SpalteSumme & letzteMglZeile).Value \> 0 Then
Exit Sub 'letzte Zeile bereits mit Teilsummenformel
End If
Do Until Zelle.Offset(i, 0) \> 0
i = i - 1
Loop
letzteZeile = letzteMglZeile + i
Do Until Not IsEmpty(Zelle.Offset(i, 1))
i = i - 1
Loop
letzteSumme = letzteMglZeile + i
.Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
"=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
End With
End Sub
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi jetzt hab ich aber das Problem, dass es negative Werte nicht dazuzählt bzw. abzieht. Und nicht sauber daneben schreibt.
Hoffe mir kann auch bei diesem Problem jemand auskunft geben! Danke
Hi,
hier die Version, die auch negative Werte verarbeiten kann
Private Sub CommandButton1\_Click()
Dim letzteZeile As Integer, letzteSumme As Integer, Zelle As Range, i As Integer
Const Rechnungsblatt As String = "Rechnung"
Const Spalte As String = "K"
Const SpalteSumme As String = "L"
Const ersteMglZeile As Integer = 2
Const letzteMglZeile As Integer = 15
With Worksheets(Rechnungsblatt)
Set Zelle = .Range(Spalte & letzteMglZeile)
If .Range(Spalte & ersteMglZeile).Value = 0 Then Exit Sub 'noch keine Werte eingegeben
If .Range(Spalte & letzteMglZeile).Value 0 And Not IsEmpty(.Range(SpalteSumme & letzteMglZeile)) Then
Exit Sub 'letzte Zeile bereits mit Teilsummenformel
End If
Do Until Zelle.Offset(i, 0) 0
i = i - 1
Loop
letzteZeile = letzteMglZeile + i
Do Until Not IsEmpty(Zelle.Offset(i, 1))
i = i - 1
Loop
letzteSumme = letzteMglZeile + i
.Range(SpalteSumme & CStr(letzteZeile)).Formula = \_
"=Sum(" & Spalte & letzteSumme + 1 & ":" & Spalte & letzteZeile & ")"
End With
End Sub
Falls es immer noch Probleme gibt, dann muss statt der Spalte K die Eingabe in den Spalten H und I als Prüfkriterium eingebaut werden.
Gruß
Franz
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]