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

Script überspringt Zeilen

Script überspringt Zeilen
16.08.2006 16:08:17
Sebastian
Hallo zusammen,
ich sitze seit 2 Stunden an einem Problem, das ich alleine nicht lösen kann. Ich habe eine Tabelle, in deren Spalte Y Beträge aufgelistet sind. Ich benötige allerdings nur Beträge != 0,-. Die 0,- Zeilen sollen komplett in die Tabelle "0 €" verschoben werden. Das nachfolgende Makro funktioniert bei den ersten beiden Zeilen, danach überspringt es Zeilen und verschiebt sogar Zeilen deren Betrag > 0 ist. Ich habe mal die Variablen überwacht, die beiden Zeilenzähler arbeiten korrekt und zeigen die richtigen Zeilen an. Wenn ich E.Value überwache zeigt er mir aber ab der 2. Zeile Beträge aus darunterliegenden Zeilen an. Irgendwie hab ich ein Brett vorm Kopf und finde den Fehler nicht. Ich würde mich freuen, wenn mir jemand weiterhelfen könnte.
Hier das Makro:

Sub Aufteilen()
Dim E As Variant
Dim L0 As Long 'Zeilenzähler Bestand
Dim N0 As Long 'Zeilenzähler 0 €
Dim ZB As Long 'Gesamtzeilenzahl
ZB = ActiveSheet.UsedRange.Rows.Count
N0 = 2
L0 = 2
For Each E In Worksheets("Bestand").Range("Y2:Y" & ZB)
ActiveCell.Value = Cells(L0, 25)
If E.Value = "0" Then
Sheets("Bestand").Select
Range(L0 & ":" & L0).Cut
Sheets("0 €").Select
Worksheets("0 €").Cells(N0, 1).Select
ActiveSheet.Paste
N0 = N0 + 1
End If
L0 = L0 + 1
Next E
End Sub

Hier die Beispieldatei:
https://www.herber.de/bbs/user/35859.xls
Viele Grüße Sebastian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Script überspringt Zeilen
16.08.2006 16:17:08
Dr.
Hi,
durch das "cutten" verändert sich die Zeilennummerierung im Sheet. ;-)
AW: Script überspringt Zeilen
16.08.2006 16:29:09
Sebastian
Danke für deine Antwort! Nach dem "cutten" sind die Zeilen aber noch vorhanden, sie sind nur leer. Ich habe es mal mit folgender Ergänzung versucht, allerdings kommt es immernoch zu seltsamen Ergebnissen:

Sub Aufteilen()
Dim E As Variant
Dim L0 As Long 'Zeilenzähler Bestand
Dim N0 As Long 'Zeilenzähler 0 €
Dim ZB As Long 'Gesamtzeilenzahl
Dim Cut As Boolean
ZB = ActiveSheet.UsedRange.Rows.Count
N0 = 2
L0 = 2
Cut = False
For Each E In Worksheets("Bestand").Range("Y2:Y" & ZB)
If E.Value = "0" Then
Sheets("Bestand").Select
Range(L0 & ":" & L0).Cut
Sheets("0 €").Select
Worksheets("0 €").Cells(N0, 1).Select
ActiveSheet.Paste
N0 = N0 + 1
Cut = True
End If
If Cut = False Then
L0 = L0 + 1
End If
Cut = False
Next E
End Sub

Gruß Sebastian
Anzeige
AW: Script überspringt Zeilen
16.08.2006 16:22:47
firmus
Hi Sebastian,
...durch den CUT verliert Du Zeilen (siehe Dr.'s Antwort).
Mache den Durchlauf einfach von der letzten Zeile rückwärts.
Damit verlierst Du zwar auch die Zeilen (absichtlich, weil "verschieben"),
aber der Bezug in Deinem Interval stimmt, weil Du zwischen Zeile 1 und der momentan
bearbeiteten Zeile keine Zeile entfernt hast.
Gruß,
Firmus
AW: Script überspringt Zeilen
16.08.2006 16:31:27
Sebastian
Danke auch dir Firmus! Ich werde es nochmal rückwärts versuchen und melde mich dann nochmal.
Gruß Sebastian
AW: Script überspringt Zeilen
16.08.2006 16:41:30
Sebastian
Auch wenn ich es rückwärts angehe bekomme ich leider nur Murks raus.
Hier die Veränderung die ich vorgenommen habe:

Sub Aufteilen()
Dim E As Variant
Dim L0 As Long 'Zeilenzähler Bestand
Dim N0 As Long 'Zeilenzähler 0 €
Dim ZB As Long 'Gesamtzeilenzahl
ZB = ActiveSheet.UsedRange.Rows.Count
N0 = 2
L0 = ZB
For Each E In Worksheets("Bestand").Range("Y" & ZB & ":Y2")
If E.Value = "0" Then
Sheets("Bestand").Select
Range(L0 & ":" & L0).Cut
Sheets("0 €").Select
Worksheets("0 €").Cells(N0, 1).Select
ActiveSheet.Paste
N0 = N0 + 1
End If
L0 = L0 - 1
Next E
End Sub

https://www.herber.de/bbs/user/35861.xls
Gruß Sebastian
Anzeige
AW: Script überspringt Zeilen
16.08.2006 16:52:43
firmus
Sebastian,
versuch mal folgende Zeile:
For Each E In Worksheets("Bestand").Range("Y" & Trim(Str(ZB)) & ":Y2")
oder für Versuche:
test = ("Y" & Trim(Str(ZB)) & ":Y2")
meines Wissens steht hier vor dem Wert von ZB ein Blank.
Gruß
Firs
AW: Script überspringt Zeilen
16.08.2006 19:27:38
Sebastian
Hallo firmus,
ich habe deine Zeile mal ausprobiert, leider mit dem selben Ergebnis. Ich habe zusätzlich auch nochmal das "cut" durch ein "copy" ersetzt nur um zu testen ob es an dem Ausschneiden liegt und dabei kam das selbe Ergebnis heraus. Da die Zeilen ja dann nicht leer sind und sie auch nicht gelöscht werden, sollte es ja auf keinen Fall eine Zeilenverschiebung geben. Tortzdem bleibt das Problem bestehn.
Gruß Sebastian
Anzeige
AW: Script überspringt Zeilen
16.08.2006 23:20:37
Sebastian
Ich habe nochmal eine kleine Nachtschicht eingelegt und das Problem genauer unter die Lupe genommen. Ich habe mal die Ausgangstabelle mit dem Ergebnis verglichen und mir ist aufgefallen, dass die kopierten Zeilen alle um 2 zu niedrig sind. D.h. wenn Zeile 9 kopiert werden müsste, dann wird Zeile 7 kopiert usw. Wenn ich diese Differenz von 2 (wo immer die sich auch eingeschleust hat) herausnehme stimmen die Ergebnisse zu 100%. Mir ist zur Zeit absolut unklar wo dieser -2 Fehler liegt, aber ich bin immernoch dran und gebe eine Rückmeldung wenn ich auf eine Lösung komme.
Gruß Sebastian
AW: Script überspringt Zeilen
16.08.2006 23:29:42
MichaV
Hallo,
so besser?


      
Sub Aufteilen()
  
Dim E As Variant
  
Dim L0 As Long 'Zeilenzähler Bestand
  Dim N0 As Long 'Zeilenzähler 0 \'80
  Dim ZB As Long 'Gesamtzeilenzahl
  ZB = ActiveSheet.Range("A65536").End(xlUp).Row
  N0 = 2
  L0 = 2
  
For E = ZB To 2 Step -1
      
If Cells(E, 25) = "0" Then
          Range(E & ":" & E).Cut (Sheets("0 \'80").Cells(N0, 1))
          N0 = N0 + 1
      
End If
  
Next E
End Sub 


Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Script überspringt Zeilen
16.08.2006 23:52:51
Sebastian
Ich bin begeistert! Vielen Dank Micha! L0 kann ich ja dann auch beseitigen.
Vielen Dank nochmal an alle für die nette Hilfe, dann kann ich ja jetzt beruhigt schlafen gehen :)
Gruß Sebastian
Danke für die Rückmeldung mT
17.08.2006 00:06:05
MichaV
Hallo,
wenn Du L0 beseitigst, mach aus E gleich ein Long.
Gute Nacht!
PS: Update auf SyntaxHighlighter 4.0 bringt übrigens auch nix.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige