Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

VBA

VBA
13.04.2017 14:04:33
Susi
HAllo,
kann man einen Code erstellen,
der alle Zeilen löscht wo nicht das Wort Hallo in der Spalte D vorhanden ist.
Die Zeilen sollen danach nachgerutscht werden, so da s keine Leerzeilen enthalten sind
Danke

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA
13.04.2017 14:13:30
Werner
Hallo Susi,
z.B. so:
Public Sub Löschen()
Dim loLetzte As Long
Dim i As Long
With Sheets("Tabelle1") 'Blattname anpassen
loLetzte = .Cells(.Rows.Count, 4).End(xlUp).Row
For i = loLetzte To 2 Step -1 'bis Zeile 2, da in Zeile 1 Überschriften
If .Cells(i, 4).Value = "Hallo" Then
.Rows(i).Delete
End If
Next i
End With
End Sub
Je nach Größe der Datei böte sich auch eine Lösung mit dem Autofilter an. Erst Spalte D nach "Hallo" filtern und dann alle sichtbaren Zeilen löschen.
Gruß Werner
AW: VBA
13.04.2017 14:18:04
Susi
hallo,
genau umgekeht.
Hallo soll bleiben und der Rest gelöscht werden
Anzeige
AW: VBA
13.04.2017 14:20:05
EtoPHG
Hallo Susi,
Wieso willst du dazu VBA?
1. (Auto)-Filtere den Datenbereich in Spalte D auf "Hallo"
2. Selektiere alle angezeigten Zeilen und Lösche sie
Das geht 100x schneller, wie eine Anfrage hier zu stellen und zu warten, und kann immer wiederverwendet werden!
Gruess Hansueli
umgekehrt: Filtern auf enthält nicht! (owT)
13.04.2017 14:20:54
EtoPHG

Sorry "Hallo" soll bleiben, rest löschen
13.04.2017 14:21:00
Susi
.
AW: VBA
13.04.2017 14:20:28
Werner
Hallo Susi,
dann halt einfach statt = ein in dieser CodeZeile
If .Cells(i, 4).Value  "Hallo" Then
Gruß Werner
AW: VBA
13.04.2017 14:36:30
Oberschlumpf
Hi Werner
man beachte den Zusatz "vorhanden" ;-)
Dein Code sucht genau nach "Hallo" und berücksichtigt nicht, wenn "Hallo" ein Teil des Eintrages ist.
Ciao
Thorsten
Anzeige
AW: VBA
13.04.2017 14:45:49
Werner
Hallo Thorsten,
da kann ich nur sagen: "Wer lesen kann ist klar im vorteil."
Ich kann es wohl nicht so gut.
Zu deiner zweiten Anmerkung: Das ist mir schon klar. Ich habe mir vor dem Absenden noch überlegt, ob ich diesbezüglich erst eine Nachfrage stellen soll. Habe es aber gelassen, da für mich eindeutig nach "Hallo" gesucht werden sollte.
Ansonsten halt mit Like und Jokern.
Wobei sich mir auch die Frage stellt warum nicht mit dem Filter?
Gruß Werner
AW: VBA
13.04.2017 15:21:51
Oberschlumpf
Hi Werner
Die Frage "warum nicht mit dem Filter?", würde ich so beantworten:
Susi hat von Excel/VBA noch nich so den Plan. Und daher kann es ja sein, dass sie auch den Filter und dessen Möglichkeiten noch nicht kennt. ;-)
Außerdem ist der Filter nur "halbautomatisch". Ein passendes Makro würde "vollautomatisch" arbeiten.
anders: Filter = mehr als 1 Schritt zum Ziel erforderlich; Makro = 1 (Button)Klick, fertig
Ciao
Thorsten
Anzeige
Zeile löschen wenn nicht
13.04.2017 14:35:47
ChrisL
Hi Susi
Hatte Lust zum Basteln...
Sub Makro1()
Call LoeschenWennNicht("Hallo", "D")
End Sub

Private Sub LoeschenWennNicht(strSuchtext As String, strSuchspalte As String, Optional WS As  _
Worksheet)
Application.ScreenUpdating = False
If WS Is Nothing Then Set WS = ActiveSheet
With WS
If WorksheetFunction.CountIf(.Columns(strSuchspalte), strSuchtext) > 0 Then
With .Range(.Cells(1, Columns.Count), .Cells(.Cells(Rows.Count, _
strSuchspalte).End(xlUp).Row, Columns.Count))
.Formula = "=IF(" & strSuchspalte & "1=""" & strSuchtext & """,1,"""")"
.Value = .Value
End With
.Columns(Columns.Count).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
.Columns(Columns.Count).Delete
End If
End With
End Sub

cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige