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

Forumthread: VBA Aktive Zeile markieren

VBA Aktive Zeile markieren
Dirk
Hallo Forum,
wie kann ich in VBA eine aktuelle Zeile selektieren?
Ich habe eine Schleife, in der ich in einer Spalte Zellen mit Inhalt 0 suche - wenn ich eine Zelle gefunden habe, dann soll die entsprechende Zeile markiert werden damit ich sie dann löschen kann.
Vielen Dank!
Gruß
Dirk
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 10:52:07
Hajo_Zi
Hallo Dirk,
in VBA ist zu 99,9% select nicht notrwendig.
Nur wenige sehen Deinen Code.

AW: VBA Aktive Zeile markieren
08.10.2010 10:59:16
Dirk
Hallo Hajo,
ich verstehe nur den ersten Satz......
Anfängern verwenden "Select" aber wahrscheinlich zu 99,9% und dazu zähle dann ich. Mit der Erkenntnis ist mein Problem aber nicht gelöst. Ich bin eben noch in dem Stadium, dass ein Code funktionieren soll und ich vor allem weiß wie und warum - dann kann ich ja ans Optimieren gehen..... Schön, wenn ich soweit wäre. Nun aber:
Do Until ActiveCell = ""
ActiveCell.Offset(1, 0).Select
If ActiveCell = 0 Then
"Markiere mir die aktuelle Zeile" (Was kann ich hier hinschreiben?)
Selection.Delete
End If
Loop
Was meinst Du mit "Nur wenige sehen Deinen Code"?
Gruß
Dirk
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 11:04:36
welga
Hallo,
z.b. so:
suche in Spalte a den Wert "0" und lösche dann die entsprechende Zeile:
letztezeile = Sheets(1).[a65536].End(xlUp).Row
For i = letztezeile To 1 Step -1
If Cells(i, 1) = 0 And Cells(i, 1) "" Then Rows(i).Delete shift:=xlUp
Next i
Wie Hajo schon gesagt hat, ist ein selektieren nicht nötig
Gruß
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 11:09:18
Dirk
Hallo Welga,
vielen Dank! So werde ich es machen. Blöd ist nur, dass ich da selbst nicht drauf gekommen wäre und gern nochmal wüßte, ob mein für mich etwas einfacherer Gedanke auch gehen kann.
Aber trotzdem herzlichen Dank!
Gruß
Dirk
AW: VBA Aktive Zeile markieren
08.10.2010 11:20:15
Luschi
Hallo Dirk,
mir gefällt der folgende Ansatz besser:
https://www.herber.de/forum/messages/1181369.html
hier werden die zu löschenden Zeilen in ein Range-Objekt definiert und dann mit einem einzigen Delete-Befehl aus der Tabelle entfernt.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 11:20:23
welga
Grundsätzlich vom Gedanken her, sollte dein Lösungsansatz auch funktionieren. Jedochwenn du etwas löschen willst, dann würde ichgenerell von unten anfangen und mich nach oben durch arbeiten.
Dein Code würde z.B. stehen bleiben, sobald eine leere Zelle vorliegt. Da würde ch dann eine Variable (Integer oder Long) einfügen den ich dann immer um 1 wachsen lassen würde.
z.B. so:
i=0
Do Until i=2000 'letzte gewünschte zu untersuchende zeile
if Cells(i+1,1)=0 and Cells(i+1,1)"" then row(i+1).delete shift:=xlup
i=i+1
Loop
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 11:37:08
Dirk
Dieser Fall kann nicht vorkommen, da leere Zellen schon vorab innerhalb des Codes rausgelöscht werden - auf einem ähnlichen Weg wie von Dir vorgeschlagen (habe ich mir aber auch mal irgendwoher kopiert und ich wollte es jetzt mal so versuchen, wie ich es auch selbst verfassen könnte...).
Ich habe es jetzt so gemacht wie von Dir vorgeschlagen und es funktioniert. Dennoch würde ich weiterhin gerne wissen, wie ich eine aktive Zeile ohne eine Variable als Zähler markieren kann.... :-)
Ich schaue mir gleich den anderen Vorschlag der gerade gepostet wurde nochmal an - vielleicht geht das in die Richtung. Meine Laienaugen haben das aber auf den ersten Blick als nicht einfacher identifiziert.....
Vielen Dank!
Dirkl
Anzeige
AW: VBA Aktive Zeile markieren
08.10.2010 11:56:12
M.
Ok, wenn du es unbedingt so willst. :)
Ich denke du meinst sowas in der Richtung:
Sub ttt()
ActiveCell.EntireRow.Select
Selection.Delete
End Sub
Gruß
Rudi
AW: VBA Aktive Zeile markieren
08.10.2010 11:49:03
Heinz
Hallo Dirk,
wenn du es unbedingt willst, dann so:
rows(activecell.row).delete
Gruß
Heinz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Aktive Zeile in Excel mit VBA markieren


Schritt-für-Schritt-Anleitung

Um in Excel mithilfe von VBA die aktive Zeile zu markieren und diese gegebenenfalls zu löschen, kannst Du folgenden Code verwenden:

Sub AktiveZeileMarkieren()
    If Not IsEmpty(ActiveCell) Then
        ActiveCell.EntireRow.Select
        Selection.Delete
    End If
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke auf Einfügen > Modul, um ein neues Modul hinzuzufügen.
  3. Kopiere den obigen Code in das Modulfenster.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Wähle eine Zelle in der Zeile aus, die Du löschen möchtest, und führe das Makro aus.

Dieser Code wird die gesamte Zeile der aktiven Zelle markieren und löschen, wenn die Zelle nicht leer ist.


Häufige Fehler und Lösungen

  • Fehler: Das Makro löscht nicht die erwartete Zeile.
    Lösung: Stelle sicher, dass Du eine Zelle in der gewünschten Zeile aktivierst, bevor Du das Makro ausführst.

  • Fehler: "Auswahl nicht möglich".
    Lösung: Überprüfe, ob das Arbeitsblatt geschützt ist oder ob Du versuchst, eine Zeile in einem nicht sichtbaren Bereich zu löschen.


Alternative Methoden

Es gibt verschiedene Ansätze, um eine aktive Zeile zu markieren oder zu löschen, ohne die Select-Methode zu verwenden. Hier eine Beispielalternative:

Sub ZeileDirektLoeschen()
    If Not IsEmpty(ActiveCell) Then
        Rows(ActiveCell.Row).Delete
    End If
End Sub

Diese Methode verwendet Rows, um die Zeile direkt zu referenzieren, ohne sie vorher zu markieren. Dies ist eine effizientere Vorgehensweise und wird empfohlen.


Praktische Beispiele

  1. Aktive Zeile löschen: Verwende den folgenden Code, um alle Zeilen zu löschen, die in Spalte A den Wert 0 haben.
Sub ZeilenMitNullLoeschen()
    Dim letzteZeile As Long
    letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row
    For i = letzteZeile To 1 Step -1
        If Cells(i, 1).Value = 0 Then
            Rows(i).Delete
        End If
    Next i
End Sub
  1. Aktive Zeile hervorheben: Der folgende Code hebt die aktive Zeile farblich hervor, anstatt sie zu löschen.
Sub AktiveZeileHervorheben()
    ActiveCell.EntireRow.Interior.Color = RGB(255, 255, 0) ' Gelb
End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select und Selection, da dies den Code langsamer und weniger stabil macht.
  • Nutze With-Anweisungen, um den Code lesbarer zu gestalten.
With ActiveCell.EntireRow
    .Interior.Color = RGB(255, 255, 0) ' Gelb hervorheben
    .Delete
End With
  • Teste Deinen Code immer in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die aktive Zeile markieren, ohne sie zu löschen?
Du kannst die aktive Zeile hervorheben, indem Du den Interior.Color-Befehl verwendest, wie im Beispiel zur aktiven Zeile hervorheben gezeigt.

2. Was ist der Unterschied zwischen Select und der direkten Zeilenreferenz?
Select markiert die Zeile, bevor eine Aktion ausgeführt wird, während die direkte Referenz effizienter ist und die Zeile direkt anspricht, ohne sie sichtbar zu machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige