Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Löschen von Zeilen

Betrifft: Löschen von Zeilen von: Erich M.
Geschrieben am: 12.09.2004 09:44:05

Hallo EXCEL-Freunde,

ich suche eine VBA-Lösung für folgendes Problem:
In nachstehender Tabelle 2 sollen alle Zeilen gelöscht werden, deren Nr. der Spalte A in Tabelle 1 in der Spalte B mit erledigt gekennzeichnet ist. Die Zahlen sind nicht in irgendeiner Form sortiert.

Besten Dank für eine Hilfe!

Tabelle1
 AB
1NrStatus
21234neu
32345erledigt
44567neu
56789erledigt
 
Tabelle2
 AB
1Nr 
26789löschen ??
32345 
44567 
51234 
66750 
72345löschen ??
85430 
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  


mfg
Erich
  


Betrifft: AW: Löschen von Zeilen von: Mike E.
Geschrieben am: 12.09.2004 10:21:24

Hallo Erich,

so z.B.:

diesen Code mußt du in die Selection_Change-Eigenschaft des Tabellenblattes im VBA-Editor zuweisen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Zeile As Integer, Zeile1 As Integer, i As Integer

Zeile1 = 2
i = 2

While Sheets(1).Cells(i, 1) <> ""
    i = i + 1
Wend


For Zeile = 2 To i


If Cells(Zeile, 2) = "erledigt" Then

    
    Sheets(1).Range(Cells(Zeile, 1), Cells(Zeile, 2)).Delete shift:=xlUp: Exit Sub
End If

Next Zeile
End Sub


Grüße
Mike


  


Betrifft: AW: Löschen von Zeilen von: Erich M.
Geschrieben am: 12.09.2004 11:28:21

Hallo Mike,

leider läuft der Code nicht durch; zudem wäre die Frage in welcher Tabelle.
Code von Annett ist aber super.

mfg
Erich


  


Betrifft: AW: Löschen von Zeilen von: Peter
Geschrieben am: 12.09.2004 10:25:36

Probiere mal das:

Sub ZeileLöschen()
    Dim intZeile As Integer, intI As Integer
    intZeile = Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
    For intI = intZeile To 1 Step -1
        If Sheets("Tabelle1").Cells(intI, 2).Value = "erledigt" Then Rows(intI).Delete
    Next intI
End Sub



  


Betrifft: AW: Löschen von Zeilen von: Erich M.
Geschrieben am: 12.09.2004 11:29:21

Hallo Peter,

besten Dank - leider löscht der code aber die gleiche Zeile in der Tabelle - darf
aber nicht sein.

Code von Annett läuft aber.

mfg
Erich


  


Betrifft: AW: Löschen von Zeilen von: Peter
Geschrieben am: 12.09.2004 11:43:19

Du hast Recht, ich habe die Aufgabenstellung nicht richtig gelesen.


  


Betrifft: AW: Löschen von Zeilen von: Annett
Geschrieben am: 12.09.2004 10:27:02

Hallo Erich,

Sub Zeilen_loeschen()
    Dim I As Long
    Dim J As Long
    Dim Letzte1 As Long
    Dim Letzte2 As Long
    Letzte1 = 65536
    With Worksheets("Tabelle1")
        If .Range("A65536") = "" Then Letzte1 = .Range("A65536").End(xlUp).Row
    End With
    Letzte2 = 65536
    With Worksheets("Tabelle2")
        If .Range("A65536") = "" Then Letzte2 = .Range("A65536").End(xlUp).Row
    End With
    For I = Letzte1 To 1 Step -1
        For J = 1 To Letzte2
            If Worksheets("Tabelle1").Cells(I, 1) = Worksheets("Tabelle2").Cells(J, 1) And _
                Worksheets("Tabelle1").Cells(I, 2) = "erledigt" Then
                Worksheets("Tabelle2").Rows(J).Delete
            End If
        Next J
    Next I
End Sub


Gruß Annett


  


Betrifft: AW: Löschen von Zeilen von: Erich M.
Geschrieben am: 12.09.2004 11:27:24

Hallo Annett,

Volltreffer! War genau das was ich gesucht habe.
Allerdings habe ich in meinen Tabellen das Problem der doppelten Nrn. entdeckt.
Erste Teillösung:

iRowL = Cells(Cells.Rows.Count, 1).End(xlUp).Row
For iRow = iRowL To 1 Step -1
If WorksheetFunction.CountIf(Columns(1), Cells(iRow, 1)) > 1 Then
MsgBox "Problem, es bestehen doppelte Nummern in Spalte A"
Exit Sub
End If
Next iRow

Damit kann ich den Vorgang abfangen, damit bei doppelten Nrn. keine falschen Löschungen
stattfinden.

Mein Problem jetzt:
Dieser Vorgang bezieht sich auf die aktivierte Tabelle - leider schaffe ich es nicht,
den Code so zu steuern, dass er
- zuerst die Tabelle 1, Spalte A
- dann die Tabelle 2, Spalte A
durchsucht undnur dann der Löschvorgang ausgeführt wird, wenn in den jeweiligen
Spalten keine Doppelten sind.

(Hast da sicher eine Idee)

Als Komfortlösung wäre dann die Anzeige der betroffenen Zeilen in der MsgBox mit den
Doppelten; da habe ich aber bestimmt was in meinem Fundus (von herber) und kann das
ergänzen.

Besten Dank nochmal.

mfg
Erich


  


Betrifft: AW: Löschen von Zeilen von: Annett
Geschrieben am: 12.09.2004 15:30:38

Hallo Erich,

kannst Du das Problem genauer erklären, vielleicht mit Beispieldatei. Ich habe den Code ohne Beispieldatei erstellt und habe jetzt keine Lust Extra eine zu erstellen. Wobei mir Dein Problem auch nicht ganz klar ist.

Gruß Annett


  


Betrifft: AW: Löschen von Zeilen von: Erich M.
Geschrieben am: 12.09.2004 17:16:09

Hallo Annett,

mittlerweile habe ich eine Lösung gefunden, ohne zu wissen ob die optimal ist:
https://www.herber.de/bbs/user/10810.xls

mfg
Erich


  


Betrifft: AW: Löschen von Zeilen von: Annett
Geschrieben am: 12.09.2004 17:19:26

Hallo Erich,

Activate und Select ist zu 99% in VBA nicht notwendig.

Gruß Annett


  


Betrifft: Danke - Annett; o.T. (vergess ich immer wieder) von: Erich M.
Geschrieben am: 13.09.2004 08:14:52

.


 

Beiträge aus den Excel-Beispielen zum Thema "Löschen von Zeilen"