Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
FOR Schleife springt unerwartet
zurück: Arbeitswoche fehlendes Datum finden und makieren weiter: Prozedur zum Makrieren von Spalten mit Datumswert Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Makro_ne
Gast


Verfasst am:
21. Jan 2013, 16:26
Rufname:

FOR Schleife springt unerwartet - FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo alle,



habe das Problem dass die innere Schleife in folgendem Makro jeweils 3 Zeilen vor der letzten Zeile aus sich raus springt und somit nicht verschobene Zellen zurück bleiben. Dabei sollte sie von Rechts nach Links die Spalten durchlaufen (Do While) und innerhalb jeweils Zellen verschieben. Die innere Schleife springt unabhängig vom Rechner oder der Tabellenbefüllung jeweils 3 Zeilen vor der letzten befüllten Zeile aus sich raus.



Hoffentlich könnt Ihr mir helfen, vielen Dank dafür!





__________________________________________

Makro:

--------------------------------------------------------------------------

Option Explicit

Sub RemoveMultipleTypes()
Dim lastRow, lastColumn As Integer
Dim i As Long

lastColumn = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Column
lastRow = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
'2 Schleifen: 1 die Zeilen durchläuft, 1 die Spalten (von hinten durchläuft -> From MAX(Spaltenindex) TO erste Spalte
'äußere Schleife: Spalten von rechts nach Links durchlaufen
'innere Schleife: Zeilen von oben nach unten durchlaufen
lastColumn = 10
Do While lastColumn > 8 'äußere Schleife über Spalten, nur bis 9 da Spalten nur bis H sortiert werden sollen

For i = 2 To lastRow 'innere Schleife über Zeilen, ab 2 da Überschrift nicht sortiert werden solls
'wenn aktuelle Zelle (Schnitt aus Spalten- und Zeilen-Index) nicht leer ist, dann mach eine neue leere Zeile unterhalb und kopiere die aktuelle Zelle in die Zeile darunter an in Spalte H
If Len(Cells(i, lastColumn)) = 0 Then
'NOP
Cells(i, lastColumn).Select
Else
Cells(i, lastColumn).Select
Cells(i + 1, lastColumn).EntireRow.Insert
Cells(i, lastColumn).Cut Destination:=Cells(i + 1, 8)
End If
lastRow = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row 'da eventuell Zeilen hinzugefügt wurden muss die letzte Reihe wieder neu ermittelt werden
MsgBox ("Aktuelle Zelle: " & CStr(i) & " " & CStr(lastColumn) & " - aktuell i|lastRow:" & CStr(i) & " " & CStr(lastRow))
Next
lastColumn = lastColumn - 1 'dekrement Spalten
Loop

End Sub
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
21. Jan 2013, 16:57
Rufname: Hansueli


AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo,

Das Ändern des Endwerts einer FOR-Schlaufe innerhalb des FOR-Konstrukts hat keine Auswirkung auf die Anzahl Durchläufe! Die Schlaufe läuft genau bis zu dem Endwert, wie er beim Eintritt in die Schlaufe war und nicht weiter. Wenn du also z.B. 3x eine Zeile eingefügt hast, beschreibt dein Fehler deine Situation.

Gruess Hansueli

_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
Makro_ne
Gast


Verfasst am:
21. Jan 2013, 20:25
Rufname:

AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo Hansueli,

ja das kommt hin, danke dir.
Gibt es workarounds?

schönen Abend!
Makro_ne
Gast


Verfasst am:
21. Jan 2013, 20:25
Rufname:

AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo Hansueli,

ja das kommt hin, danke dir.
Gibt es workarounds?

schönen Abend!
Kuwe
Excel-Anwender mit VBA


Verfasst am:
22. Jan 2013, 02:21
Rufname: Uwe

AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo,

mit zusätzlicher Ausgleichsvariable so::

Code:
Sub RemoveMultipleTypes()
Dim lastRow, lastColumn As Integer
Dim i As Long, j As Long

    lastColumn = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Column
    lastRow = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row
    '2 Schleifen: 1 die Zeilen durchläuft, 1 die Spalten (von hinten durchläuft -> From MAX(Spaltenindex) TO erste Spalte
    'äußere Schleife: Spalten von rechts nach Links durchlaufen
    'innere Schleife: Zeilen von oben nach unten durchlaufen
    lastColumn = 10
    Do While lastColumn > 8 'äußere Schleife über Spalten, nur bis 9 da Spalten nur bis H sortiert werden sollen

        For i = 2 To lastRow 'innere Schleife über Zeilen, ab 2 da Überschrift nicht sortiert werden solls
            'wenn aktuelle Zelle (Schnitt aus Spalten- und Zeilen-Index) nicht leer ist, dann mach eine neue leere Zeile unterhalb und kopiere die aktuelle Zelle in die Zeile darunter an in Spalte H
            If Len(Cells(i + j, lastColumn)) = 0 Then
                'NOP
                Cells(i + j, lastColumn).Select
            Else
                Cells(i + j, lastColumn).Select
                Cells(i + j + 1, lastColumn).EntireRow.Insert
                Cells(i + j, lastColumn).Cut Destination:=Cells(i + j + 1, 8)
                j = j + 1
            End If
            lastRow = Sheets("Tabelle1").UsedRange.SpecialCells(xlCellTypeLastCell).Row 'da eventuell Zeilen hinzugefügt wurden muss die letzte Reihe wieder neu ermittelt werden
            MsgBox ("Aktuelle Zelle: " & CStr(i + j) & " " & CStr(lastColumn) & "     -     aktuell i|lastRow:" & CStr(i + j) & " " & CStr(lastRow))
        Next
        lastColumn = lastColumn - 1 'dekrement Spalten
    Loop
   
End Sub

_________________
Gruß Uwe
EtoPHG
Ich sehe dunkle Zeiten aufziehen...


Verfasst am:
22. Jan 2013, 09:18
Rufname: Hansueli

AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Hallo,

Oder: "Beim Löschen oder Einfügen Schlaufe immer von GROSS zu KLEIN", also Befehl umkehren:
Code:
 For i = lastRow To 2 Step -1
...
Gruess Hansueli
_________________
Forenhelfer danken für eine Rückmeldung!
Der Kluge lernt, der Dummkopf erteilt gern Belehrungen. - Anton Tschechow
Makro_ne
Gast


Verfasst am:
23. Jan 2013, 08:52
Rufname:


AW: FOR Schleife springt unerwartet - AW: FOR Schleife springt unerwartet

Nach oben
       Version: Office 2007

Danke,

das löst mein Problem! Vielen Dank euch!

Grüße!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Schleife Bilden 3 Baatop 226 17. Okt 2011, 00:52
Baatop Schleife Bilden
Keine neuen Beiträge Excel Formeln: Fehlemeldung: Too many arguments for this function 4 Constantin 408 05. Sep 2011, 12:28
Gast Fehlemeldung: Too many arguments for this function
Keine neuen Beiträge Excel Formeln: For Schleife 2 Anfänger5000 431 17. Jun 2010, 20:38
Anfänger5000 For Schleife
Keine neuen Beiträge Excel Formate: Suchen und ersetzen in allen Tabellenblättern / Schleife ? 5 JAG75 1116 10. Dez 2006, 21:28
< Peter > Suchen und ersetzen in allen Tabellenblättern / Schleife ?
Keine neuen Beiträge Excel VBA (Makros): Leerzeilen einfügen / Schleife 3 Hermann44 1017 21. Sep 2006, 14:13
Gast Leerzeilen einfügen / Schleife
Keine neuen Beiträge Excel Formeln: einfaches for+if als formel? 7 dme 697 16. Mai 2006, 09:04
dme einfaches for+if als formel?
Keine neuen Beiträge Excel VBA (Makros): VB for noob 1 Gast 491 13. Okt 2005, 11:35
Gast VB for noob
Keine neuen Beiträge Excel VBA (Makros): Überschreitet Zahl MIN MAX Grenze (Schleife) 3 Armbreaker85 601 12. Jul 2005, 11:07
Armbreaker85 Überschreitet Zahl MIN MAX Grenze (Schleife)
Keine neuen Beiträge Excel VBA (Makros): Brauche Hilfe bei Schleife 2 MVJHS33 709 24. Jun 2005, 10:47
MVJHS33 Brauche Hilfe bei Schleife
Keine neuen Beiträge Excel VBA (Makros): Probleme mit For...Next Anweisung 6 Andre1977 501 14. Jun 2005, 22:22
Charlie Probleme mit For...Next Anweisung
Keine neuen Beiträge Excel VBA (Makros): do while schleife abbrechen ??? 1 krs 11415 28. Feb 2005, 13:51
Jeanie do while schleife abbrechen  ???
Keine neuen Beiträge Excel VBA (Makros): Diplomarbeit Problem -> Schleife mit WENN DANN kombiniere 3 joker.mn@gmx.de 709 14. Feb 2005, 10:17
* Sven Diplomarbeit Problem -> Schleife mit WENN DANN kombiniere
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft-Excel Diagramme