Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

schleife....

Forumthread: schleife....

schleife....
25.11.2004 16:43:14
Jan
hallo,
ich habe eine frage zu einer schleife:
in einem langen excel sheet sind in spalte 9 zahlen eingetragen, mit leeren zellen dazwischen. ich habe nun ein programm geschrieben, dass in die leeren zellen die summe der darüberliegenden zahlen einträgt:
....
Dim j As Long
Dim k As Double
lastrow = Worksheets("Book1").Range("b65536").End(xlUp).Row
For j = 8 To lastrow
If cells(j, 9).Value = Empty Then
cells(j, 9) = k
k = 0
Else: k = (k + cells(j, 9).Value)
End If
Next
das problem besteht nun darin, dass mir excel nicht bis zum ende der tabelle summiert, sondern lediglich bis zeile 4329
vba zeigt mir den korrekten wert für "lastrow", nämlich 5394
für xlup liegt jedoch ein wert von -4162 vor
..ich kann mir diesen fehler nicht erklären...
kann mir jemand helfen?
für was steht überhaupt XLUP?
THANX
JAN
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: schleife....
25.11.2004 17:04:30
Hans
hi,
lastrow = Worksheets("Book1").Range("b65536").End(xlUp).Row +1
versuch mal
tschö
AW: schleife....
25.11.2004 17:11:30
Volker
Hallo Jan,
So ist es eleganter
i=0
j=8
while i<65536
i = Cells(j, 1).End(xlDown).Row
Cells(i + 1, 1) = WorksheetFunction.Sum(Range(Cells(j, 1), Cells(i, 1)))
j = i + 2
wend
Das erklärt zwar nicht den Fehlar, ist aber schneller.

Gruß
Volker
Anzeige
AW: schleife....
25.11.2004 18:32:15
andre
Hallo Jan,
Excel springt von unten aus in die letzte belegte Zelle, also nach B5394.
Dann wird I5394 geprüft - was steht denn da drin? Ist es das, was Du erwartest? Soll die Summe eventuell in I5395? das geht so nicht!
so ist es eleganter und schneller:

Sub Makro1()
' Makro1 Makro
' Makro am 25.11.2004 von SchauAn aufgezeichnet
Dim letztezeile As Long, aktzeile As Long
letztezeile = Cells(Rows.Count, 8).End(xlUp).Row
Cells(1, 9).Activate
aktzeile = ActiveCell.Row
Do While aktzeile <= letztezeile
ActiveCell.End(xlDown).Offset(1, 0).Activate
ActiveCell.Value = WorksheetFunction.Sum(Range(Cells(aktzeile, 9), Cells(ActiveCell.Row, 9)))
aktzeile = ActiveCell.Row + 1
Loop
End Sub

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige