Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
520to524
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
520to524
520to524
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige