Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
848to852
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
848to852
848to852
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Summieren mit VBA klappt leider nicht

Summieren mit VBA klappt leider nicht
27.02.2007 12:07:00
Christian
Hallo Leute,
der nachfolgende Code bringt mein Excel zum Abstürzen und ich eghe davon aus, dass es an der umständlichen Berechnungsweise liegt, die ich gecodet habe.
Wie könnte ich denn eine elegantere und vor allem eine nicht so ressourcenlastige Formel verwenden?
Eine zweite Frage: Woran kann es liegen, dass ich die Excel-Datei, die ich mit Excel 2003 erstellt ahbe nciht in Excel 9 /2000 öffnen kann und beim Öffnen Excel abstürzt.
Vielen Dank

Sub Auslesen()
Dim i, j, m, k, letztessheet, startsheet, letztespalte, monatsspalte, startmonat
letztessheet = Sheets.Count 'zählt die Tabellen
startsheet = 7
startmonat = 9
h = 8
letztespalte = Worksheets(startsheet).Cells(4, Columns.Count).End(xlToLeft).Column
For k = 5 To 93 Step 1 monatsspalte = 5
For j = startmonat To letztespalte Step 6
m = 120
Worksheets("V").Cells(6, monatsspalte) = Worksheets(startsheet).Cells(4, j)
For i = startsheet To letztessheet Step 1
Worksheets("V").Cells(m, 1) = Worksheets(i).Cells(k, j)
Worksheets("V").Cells(h, monatsspalte) = Worksheets("V").Range("A119").Value
'Application.Wait Now + TimeValue("00:00:01")
Worksheets("V").Cells(m, 2) = Worksheets(i).Cells(k, j - 3) 'in spalte j-3 stehen die _
Stückbestände   Worksheets("v").Cells(h, monatsspalte + 1) = Worksheets("V").Range("B119").Value
'Worksheets("V").Cells(h, monatsspalte) = _
Application.WorksheetFunction.Sum(Worksheets(i).Cells(k, j)) 'eventuell etwas mit _
SUBTOTAL
m = m + 1
Next i
monatsspalte = monatsspalte + 3
Next j
h = h + 1
Next k
Rows("1:1").EntireColumn.AutoFit
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summieren mit VBA klappt leider nicht
Daniel
Hallo
den Code zu verbessern ist ohne genauere beschreibung und ohne Beispieldaten, an denen man was testen kann, nicht so ganz leicht.
deswegen nur mal so die grundsätzlichen Fehler:
- Variable h ist nicht deklariert
- allen Variablen sollte auch der passende Variablentyp zugewiesen werde, das spart Speicherplatz erhöht die Geschwindigkeit und schützt vor logischen Fehlern.
also: Dim i as long, k as long, h as long usw.
- Das For k = 5 To 93 Step 1 monatsspalte = 5 erzeugt einen Syntaxfehler und müsste in 2 Zeilen geschrieben werden:

For k = 5 To 93 Step 1
monatsspalte = 5

Gruß, Daniel
Anzeige
AW: Summieren mit VBA klappt leider nicht
28.02.2007 00:04:00
Christian
Hallo Daniel,
danke für deine Antwort. Das h nicht deklariert war ist mir gar nciht aufgefallen, die andere Sache: "monatsspalte = 5" steht in meinem Code auch in einer eigenen Zeile.
Der Code leif, als ich noch nciht soviele Werte drinnen hatte, aber läuft seit ich größere Exceltabellen hab nciht mehr, selbst wenn ich die Schleife kürzer mache (also z.B. for i= 1 to 10)
Zur Funktionsweise:
In dem Tabellenblatt V wird der Code gestartet. In diesem Blatt sind Artikelnamen eingetragen.
Der Code soll aus allen anderen Tabellenblättern, die jeweils für einen Kunden stehen, die Anzahl der Artikel auslesen und das für jeden Monat. In jedem Tabellenblatt sind die Artikelnamen in gleicher Reihenfolge eingegeben, also z.B. immer in A1 steht "Nutella" in A2 "Marmelade"...
Die Artikel stehen in Zeile 5 bis 93, daher for k=5 to 93.
die anzahl der Artikel steht immer in einem Abstand von 6 Spalten, deshalb For j = startmonat To letztespalte Step 6
Es wird also jede Tabelle geöffnet (for i=startsheet to letztessheet) dann jeder Monat in diesen Tabellen angeschaut (for j=startmonat to letztespalte step 6) und dann für jeden Artikel k die Anzahl ausgelesen (die natürlich auch Null sein kann).
Diese ausgelesenen Werte werden dann untereinander in Tabelle V geschrieben ( Worksheets("V").Cells(m, 1) = Worksheets(i).Cells(k, j) )
In A119 habe ich dann stehen "Summe(A120:A220), so dass die Werte aufsummiert werden. Schließlich wird dann dieser Wert hinter den jeweiligen Artikel kopiert ( Worksheets("V").Cells(h, monatsspalte) = Worksheets("V").Range("A119").Value )
Da ich das Aufsummieren, mangels besserer Fähigkeiten, doch sehr umständlich gestaltet habe, wäre heir eine einfachere Lösung sehr von Hilfe oder eine andere Lösung, damit Excel bei Ausführen des Codes nicht mehr abstürzt.
Hier die Beispieldatei: https://www.herber.de/bbs/user/40746.xls
Anzeige
AW: Summieren mit VBA klappt leider nicht
02.03.2007 05:42:00
Hans
Hallo Christian,
ich habe Dir die Beispielarbeitsmappe mit einem Lösungsansatz auf der Server gestellt:
https://www.herber.de/bbs/user/40783.xls
Hier der Code:
Sub Zusammenfassen()
Dim iWks As Integer
Dim iRow As Integer, iRowT As Integer, iCol As Integer, iColT As Integer
For iWks = 2 To Worksheets.Count
iRow = 4
With Worksheets(iWks)
Do Until IsEmpty(.Cells(iRow, 1))
iCol = 2
iColT = 2
Do Until IsEmpty(.Cells(iRow, iCol))
Cells(iRow, iColT).Value = _
Cells(iRow, iColT).Value + _
.Cells(iRow, iCol).Value
iCol = iCol + 6
iColT = iColT + 1
Loop
iRow = iRow + 1
Loop
End With
Next iWks
For iCol = 2 To iColT - 1
Cells(iRow, iCol).Value = _
WorksheetFunction.Sum(Range(Cells(4, iCol), Cells(iRow - 1, iCol)))
Next iCol
For iRow = 4 To iRow
Cells(iRow, iColT).Value = _
WorksheetFunction.Sum(Range(Cells(iRow, 2), Cells(iRow, iColT - 1)))
Next iRow
End Sub
Gruss hans
Anzeige
AW: Summieren mit VBA klappt leider nicht
02.03.2007 14:33:00
Christian
Hallo Hans,
vielen Dank für deine Hilfe. Das Programm läuft.
Wenn ich mehrfach "Zusammenfassen" anklicke, dann summiert der Code die Ergebnisse vom letzten Durchlauf mit auf. Ich denke, dass dies an folgenden Zeilen liegt:
Do Until IsEmpty(.Cells(iRow, iCol))
Cells(iRow, iColT).Value = _
Cells(iRow, iColT).Value + _
.Cells(iRow, iCol).Value
wollte das ändern, aber bekomme immer Syntaxfehler angezeigt.
Ist jetzt nicht so wichtig, ich kann ja vorher ClearContents durchlaufen lassen!
Also nochmals vielen Dank!
AW: Summieren mit VBA klappt leider nicht
02.03.2007 14:56:00
Christian
Leider ist mir nochwas aufgefallen:
Sobald ich in einer Zeile kein Wert steht, werden die restlichen Werte in diesem Sheet in der Zeile nicht mit aufsummiert.
Do Until IsEmpty
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige