Microsoft Excel

Herbers Excel/VBA-Archiv

letzte Zeile aktualisiert sich nicht

Betrifft: letzte Zeile aktualisiert sich nicht von: Matthias
Geschrieben am: 17.09.2020 14:45:40

Hallo zusammen,

es geht um folgenden Code:

  • Sub leerzeilen()
    
    Dim lz_komm As Long
    Dim i  as Long
    
    lz_komm = Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row
    
    With kommblatt
    
    i = 2 to lz_komm + 1
    If Worksheets(2).Cells(i, 26).Value <> Worksheets(2).Cells(i - 1, 26).Value Then
    
    Rows(i).Insert
    i = i + 1
    lz_komm = lz_komm + 1
    
    End If
    Next i
    End With
    End Sub



  • Da der Code während des Ausführens neue Zeilen erstellt, müsste sich die "lz_komm" also die letzte Zeile, nach jedem durchgang aktualisieren.
    Hierfür habe ich "lz_komm = lz_komm + 1" angefügt.

    Jedoch arbeitet der Code nur, bis der Anfangswert lz_komm + 1 erfüllt ist.

    Wie kann man das ganze dynamischer gestalten, dass lz_komm nicht als fester Wert hinterlegt wird, sondern sich nach jedem Schritt aktualisiert?
    Oder gibt es hierfür bessere Lösungen?

    Liebe Grüße

    Matthias

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Werner
    Geschrieben am: 17.09.2020 15:13:47

    Hallo,

    versuch mal mit der Schleife rückwärts, also von unten nach oben.
    Sub leerzeilen()
    Dim lz_komm As Long
    Dim i  As Long
    
    lz_komm = Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row
    
    With kommblatt
        For i = lz_komm To 2 Step -1
            If Worksheets(2).Cells(i, 2).Value <> Worksheets(2).Cells(i - 1, 2).Value Then
                Rows(i).Insert
            End If
        Next i
    End With
    End Sub
    Gruß Werner

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Matthias
    Geschrieben am: 17.09.2020 15:30:49

    Hallo Werner,

    super Hinweis. 1000x Dank schon mal.
    Dennoch wüsste ich gerne, ob es eine Möglichkeit gibt, dass Werte sich aktualisieren.
    In einem späteren Teil des Codes soll das Makro Koordinaten in einer Matrix suchen und den entsprechenden Wert in den Zeilen eintragen.
    Diese Koordinaten werden allerdings nach jeder Zeile an einer anderen Stelle sein.

    Es sucht dann also nach Wert x in Spalte A und nach Wert y in Zeile 1.
    Dann würde ich mit "Cells(y, x).copy " entsprechend kopieren und an der richtigen Stelle einfügen lassen.
    Wie löst man das Problem, dass das Makro dann nicht jedes mal den selben Wert nimmt?

    Wenn ich die Problematik richtig verstehe, dann würde das Makro die Werte x und y einmal suchen und danach jedes mal den selben Wert verwenden?

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Daniel
    Geschrieben am: 17.09.2020 15:37:40

    Hi
    bei FOR-Schleifen ist der Schleifenendwert fixiert so wie zu beginn der Schleife berechnet und kann auch nachträglich nicht mehr verändert werden (dh VBA schreibt sich einmalig den Variablenwert fest in den Speicher).

    Wenn man Schleifen mit veränderlichem Endwert programmieren will, muss man die DO-Schleife verwenden.
    Hier wird bei jedem Durchlauf die Abbruchbedingung neu berechnet, so dass man mit veränderlichen Endwerten arbeiten kann.

    Gruß Daniel

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Matthias
    Geschrieben am: 17.09.2020 17:07:11

    Hallo Daniel,

    Ich danke dir für die Erklärung. Das hat mir schon vollkommen geholfen :)

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Werner
    Geschrieben am: 17.09.2020 15:38:09

    Hallo,

    jetzt stellt sich erst mal die Frage, ob dein erstes Problem gelöst ist oder nicht.

    Und zu deinem zweiten Problem kann kein Mensch mit deiner Beschreibung etwas anfangen. Mach mal eine Beispielmappe in der du aufzeigst was, wann, warum, wohin kopiert werden soll.

    Gruß Werner

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: Matthias
    Geschrieben am: 17.09.2020 17:10:15

    Ja, das Problem ist auch durch diese Variante gelöst.
    Eine Beispielmappe halte ich für unnötig, da ich lediglich erklären wollte wieso dieser Wert nicht fest sein darf.
    Die Erklärung von Daniel hat mir in dem Fall geholfen.

    Danke trotzdem für jeden Lösungsansatz.

    Besten Gruß

    Betrifft: AW: letzte Zeile aktualisiert sich nicht
    von: UweD
    Geschrieben am: 17.09.2020 15:58:49

    Hallo
    Sub leerzeilen()
      
      Dim lz_komm As Long
      Dim i  As Long
      
      lz_komm = Worksheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row
      i = 2
      
        Do Until i > lz_komm
            If Worksheets(2).Cells(i, 26).Value <> Worksheets(2).Cells(i - 1, 26).Value Then
        
                Rows(i).Insert
                lz_komm = lz_komm + 1
                i = i + 1
        
            End If
            i = i + 1
        Loop
    End Sub
    
    LG UweD

    Beiträge aus dem Excel-Forum zum Thema "letzte Zeile aktualisiert sich nicht"