PDA

Vollständige Version anzeigen : Summen Problem mit wechselnder Addressbezeichnung


hopethisnameworks
22.03.2009, 19:04
Hallo Zusammen,

habe mal wieder ein Problem. Am besten kann ich dies mit folgendem Code veranschaulichen:
Sub test()

AT = InputBox("Wieviele Aufgaben gibte es in Hauptteil 1?", "Aufgaben Hauptteil")

For zahl = 1 To AT

x = zahl * 2 + 1
y = zahl * 2 + 2
at1 = InputBox("Bezeichung der Aufgabe:", "Bezeichnung der Aufgabe", "Aufg. " & zahl)
at1P = InputBox("Punkte für " & at1 & ":", "Punkte der Aufgabe")
Cells(1, x).Value = at1
Cells(1, y).Value = "max. " & at1P & " P."
Cells(2, y).Value = at1P
summe = CDbl(at1P) + summe
Next zahl

Z = zahl * 2 + 3

Cells(1, Z).Value = "noch leer " & summe

End Sub


Durch die Variable Summe kann ich bequem die Summe aller möglichen Punkte berechnen lassen.

Nun zum Problem. Wie kann ich in die Zelle unter der Summer aller möglichen Punkte (Cells(2,Z)) eine Summenformel generieren? Also, dass ich z.B. bei AT=2 (also 2 Aufgabenteilen) eine korrekte Summenformel bekomme. Hier also: =SUMME(C2;E2) ???

Wäre super, wenn mir da jemand weiterhelfen könnte. Bei AT=3 wäre die Summenformel: =SUMME(C2;E2;G2) usw.

danke

jinx
22.03.2009, 20:14
Moin, hopethisnameworks,

mehr als 30 Argumente gehen bei dieser Art der Summenbildung nicht zusammen, und diese Art des Aufbaus würde ich überdenken... ;)

Sub test()
Dim AT, zahl, x, y, at1, at1P, xSumme, z
Dim strSummenbereich As String

AT = InputBox("Wieviele Aufgaben gibte es in Hauptteil 1?", "Aufgaben Hauptteil")

For zahl = 1 To AT

x = zahl * 2 + 1
y = zahl * 2 + 2
at1 = InputBox("Bezeichung der Aufgabe:", "Bezeichnung der Aufgabe", "Aufg. " & zahl)
at1P = InputBox("Punkte für " & at1 & ":", "Punkte der Aufgabe")
Cells(1, x).Value = at1
Cells(1, y).Value = "max. " & at1P & " P."
Cells(2, y).Value = at1P
xSumme = CDbl(at1P) + xSumme
strSummenbereich = strSummenbereich & Cells(2, x).Address(0, 0) & ","
Next zahl

z = zahl * 2 + 3

Cells(1, z).Value = "noch leer " & xSumme
Cells(2, z).Formula = "=SUM(" & Left(strSummenbereich, Len(strSummenbereich) - 1) & ")"

End Sub

hopethisnameworks
23.03.2009, 14:25
super, das funktioniert einwandfrei.

Würde den Aufbau ja auch überdenken, da ich aber absoluter Frischling bin, weiss ich nicht, wie ich das besser lösen könnte.

hopethisnameworks
24.03.2009, 09:16
Hallo nochmal. Habe einfach mal probiert deine Formel ein wenig abzuändern. nämlich mit einer rundenfunktion:

Von deiner Version:
Cells(2, z).Formula = "=SUM(" & Left(strSummenbereich, Len(strSummenbereich) - 1) & ")"

zu dieser hier:
Cells(2, z).FormulaLocal = "=VRUNDEN(Summe(" & Left(strSummenbereich, Len(strSummenbereich) - 1) & ");1)"

kann nicht verstehen, warum es jetzt einen debug fehler gibt. (objektdefinierter Fehler) in der englischen Schreibform habe ich es auch schon ohne erfolg getestet.

danke

jinx
24.03.2009, 17:33
Moin, hopethisnameworks,

Cells(2, z).Formula = "=Round(SUM(" & Left(strSummenbereich, Len(strSummenbereich) - 1) & "),0)"

hopethisnameworks
25.03.2009, 08:32
vielen dank. keine ahnung warum das jetzt wieder Round heissen muss, aber es geht.

jinx
25.03.2009, 16:19
Moin, hopethisnameworks,

die Tabellenfunktionalität gibt es als Runden, Auf-, Ab- und VRunden - wobei für Deine Zwecke die einfache Rundungsfunktion ausreichen sollte (und die wurde hier eingesetzt). Man kann auch alternativ eine Formel zur Berechnung einsetzen und Ganzzahlen verwenden... ;)