Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
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
Inhaltsverzeichnis

Excel VBA bedingtes Zeilenlöschen

Excel VBA bedingtes Zeilenlöschen
28.05.2018 11:02:30
Hakan
Hallo Forum
Mein Anwendungsbeispiel habe ich hier noch nicht gefunden uns bitte um Hilfe zur Lösung.
In meiner Tabelle soll eine Zeile gelöscht werden, wenn in den Spalten 11 (K) und / oder 12 (L) etwas eingetragen ist.
Mit freundlichen Grüßen
Hakan
Verwende Excel 2016

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
28.05.2018 11:22:45
UweD
Hallo
wenn es nicht allzu viele Zeilen sind dann per Schleife
Sub Zeilen_weg()
    Dim TB, RR As Double, i As Double, ZE As Integer, Sp1 As Integer, Sp2 As Integer
    
    Application.ScreenUpdating = False
    
    ZE = 2 'wegen Überschrift 
    Sp1 = 11
    Sp2 = 12
    
    With ActiveWorkbook.Sheets("Tabelle1")
    
        RR = .Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes 

        For i = RR To ZE Step -1
            If .Cells(i, Sp1) <> "" Or .Cells(i, Sp2) <> "" Then
                .Rows(i).Delete xlUp
            End If
        Next
    End With
End Sub

LG UweD
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
28.05.2018 11:59:24
Hakan
Hallo Uwe
Vielen lieben Dank. Dein Code funktioniert fabelhaft.
Darf ich Dich noch etwas fragen. Ich habe Deinen Code in ein Modul eingefügt, in dem auch schon andere Codes vorhanden sind, die jeweils durch Buttons in meiner Tabelle angesprochen und ausgelöst werden.
Ich würde diese Funktionen gerne in Serie schalten und sie einem Button zuzuweisen um sie per klick auf die aus dem Zwischenspeicher eingefügte Tabelle anzuwenden. Wäre dies ohne größeren Aufwand möglich?
LG Hakan
AW: Excel VBA bedingtes Zeilenlöschen
28.05.2018 12:05:09
Lutz
Hallo Hakan,
einfach z.B. eine Form einfügen und dann die Form mit der rechten Maustaste anklicken und auf Makro zuweisen gehen. Dann das Makro zuweisen und das wars.
VG Lutz
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
28.05.2018 12:21:51
Hakan
Hallo Lutz,
vielen Dank für Deine Antwort. Ich würde diese Funktionen gerne in Serie schalten und sie "einem" Button zuzuweisen um sie per klick auf die aus dem Zwischenspeicher eingefügte Tabelle anzuwenden.
Alle Codes im erwähnten Modul sollen per Klick auf die aus dem Zwischenspeicher eingefügte Tabelle angewendet werden.
Dabei ist der gegenwärtige Stand so, dass ich mehrere Buttons habe, die ich klicken muss, um die sich dahinter verbergenden Funktionen auf die Tabelle anzuwenden. Unter anderem die Funktion von Uwe`s Code.
Die Idee war, nur noch einen Button zu haben und die Funktionen nacheinander auf die aus dem Zwischenspeicher eingefügte Tabelle anzuwenden.
VG Hakan
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
28.05.2018 13:21:38
UweD
Hallo
aus einem "Hauptmakro" kannst du die Anderen der Reihe nach aufrufen.
Sub Alle() ' das hier aufrufen 
    Call AAA
    Call Zeilen_weg
    Call BBB
    
End Sub

'---------------------------- 


Sub AAA()
    'dein Makro1 
End Sub

'---------------------------- 


Sub BBB()
    'dein Makro2 
End Sub

'---------------------------- 


Sub Zeilen_weg()
    Dim TB, RR As Double, i As Double, ZE As Integer, Sp1 As Integer, Sp2 As Integer
    
    Application.ScreenUpdating = False
    
    ZE = 2 'wegen Überschrift 
    Sp1 = 11
    Sp2 = 12
    
    With ActiveSheet
    
        RR = .Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes 

        For i = RR To ZE Step -1
            If .Cells(i, Sp1) <> "" Or .Cells(i, Sp2) <> "" Then
                .Rows(i).Delete xlUp
            End If
        Next
    End With
End Sub



&GT&GT auf die aus dem Zwischenspeicher eingefügte Tabelle
Wenn das dann die Aktive ist, musst du in meinem Makro nur die eine Zeile ändern
    With ActiveSheet
RR = .Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes

LG UweD
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
29.05.2018 07:25:20
Hakan
Hallo Uwe
vielen Dank für Deine Mühen :-) Ich werde Deinen Anweisungen folgen und versuchen das Ding ans laufen zu bringen. Melde mich auf jeden Fall. Es sieht sehr viel versprechend aus.
LG Hakan
AW: Excel VBA bedingtes Zeilenlöschen
30.05.2018 04:50:20
Hakan
Hallo Uwe
Ich konnte es bisher leider nicht zum Laufen kriegen. Deswegen habe ich hier mal alle Makros einkopiert, die auf Oneklick hintereinander auf die aus dem Zwischenspeicher eingefügte Tabelle angewendet werden sollen. In den letzten beiden Makros, die bis auf den Adressaten identisch sind, wird folgende Zeile rot markiert:
ActiveSheet.Range("B3:J45).Autofilter 3, "EW*" Ausgeworfener Hinweis: Fehler beim kompilieren - Erwartet: Listentrennzeichen oder)
Dabei wird die

Sub Einleitung "

Sub TabelleFiltern()" sowie das "EW" gelb markiert. Ich bekomme nicht heraus, was es da von mir  _
will :-)
LG Hakan

Sub Alle() ' das hier aufrufen
Call Aus_FARMS_Einfügen
Call Zeilen_weg
Call ZeilenLöschen
End Sub
'----------------------------
Sub Aus_FARMS_Einfügen()
' Aus_FARMS_Einfügen Makro
' Fügt ungefilterete Rohdaten aus FARMS ein und eliminiert die Überschrift
' Tastenkombination: Strg+o
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Rows("3:3").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
ActiveWindow.SmallScroll Down:=12
Range("L25").Select
ActiveWindow.SmallScroll Down:=-48
End Sub
'----------------------------
Sub Zeilen_weg()
Dim TB, RR As Double, i As Double, ZE As Integer, Sp1 As Integer, Sp2 As Integer
Application.ScreenUpdating = False
ZE = 3 'wegen Überschrift
Sp1 = 11
Sp2 = 12
With ActiveWorkbook.Sheets("Vorbereitung")
RR = .Cells.SpecialCells(xlCellTypeLastCell).Row 'Letzte Zeile des gesamten Blattes
For i = RR To ZE Step -1
If .Cells(i, Sp1)  "" Or .Cells(i, Sp2)  "" Then
.Rows(i).Delete xlUp
End If
Next
End With
End Sub
'----------------------------
Sub ZeilenLöschen()
Dim varDaten As Variant
Dim LRow As Long
Dim i As Integer
'Hier die Werte eingeben, bei denen gelöscht werden soll
varDaten = Array("LSH", "H03", "Y04", "Y08")
With ActiveWorkbook.Sheets("Vorbereitung")
LRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 7 To 8
'Hier Bereich anpassen
.Range("A1:Z" & LRow).AutoFilter Field:=i, _
Criteria1:=varDaten, Operator:=xlFilterValues
.Range("A2:A" & LRow).SpecialCells(xlCellTypeVisible) _
.EntireRow.Delete
.ShowAllData
Next
.AutoFilterMode = False
End With
End Sub
Sub TabelleFiltern()
'Das Tabellenblatt aktivieren
ThisWorkbook.Worksheets("Vorbereitung").Activate
'Filtereinstellungen auf Null setzen
ActiveSheet.Range("B3:J45").AutoFilter
'Filter wählen - Kategorie "EW"
ActiveSheet.Range("B3:J45).Autofilter 3, "EW*"
'Information in ein anderes Tabellenblatt Kopieren
ThisWorkbook.Worksheets("Versand EW").Cells.Clear
'Informationen kopieren
ActiveSheet.Range("B3:J45").Copy
ThisWorkbook.Worksheets("Versand EW").Range("A4").PasteSpecial xlValues
End Sub
Sub TabelleFiltern()
'Das Tabellenblatt aktivieren
ThisWorkbook.Worksheets("Vorbereitung").Activate
'Filtereinstellungen auf Null setzen
ActiveSheet.Range("B3:J45").AutoFilter
'Filter wählen - Kategorie "EW"
ActiveSheet.Range("B3:J45).Autofilter 3, "FR*"
'Information in ein anderes Tabellenblatt Kopieren
ThisWorkbook.Worksheets("Versand EW").Cells.Clear
'Informationen kopieren
ActiveSheet.Range("B3:J45").Copy
ThisWorkbook.Worksheets("Versand FR").Range("A4").PasteSpecial xlValues
End Sub

Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
30.05.2018 08:11:39
UweD
Hallo
hier fehlt das hintere " im Range
ActiveSheet.Range("B3:J45").Autofilter 3, "FR*"



Auf select und activate kann inb 99% verzichtet werden.
Den ersten Code hab ich dir mal gekürzt

Sub Aus_FARMS_Einfügen()
' Aus_FARMS_Einfügen Makro
' Fügt ungefilterete Rohdaten aus FARMS ein und eliminiert die Überschrift
' Tastenkombination: Strg+o
Range("B3").PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Rows("3:3").Delete Shift:=xlUp
End Sub
LG UweD
Anzeige
AW: Excel VBA bedingtes Zeilenlöschen
30.05.2018 09:30:26
Hakan
Hallo Uwe
Vielen Dank für Deine Codeoptimierung und den aufgespürten Fehler. Leider tut sich außer dem Einfügen nichts.
LG Hakan
AW: Excel VBA bedingtes Zeilenlöschen
30.05.2018 11:21:31
UweD
Dann kann ich dir leider nicht helfen.
ggf. eine Musterdatei mal hochladen und genau beschreiben, wie du vorgehst.
LG UweD
AW: Excel VBA bedingtes Zeilenlöschen
31.05.2018 00:37:41
Hakan
Hallo Uwe
Du hast mir schon sehr weitergeholfen. Ich möchte mich dafür ganz herzlich bedanken. Wenn das für Dich OK ist, dann würde ich meine letzte Anfrage gerne neu formulieren und erneut einstellen.
LG Hakan

334 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige