Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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
sichtbare Zeilen löschen
06.07.2022 16:21:17
Björn
Hallo,
ich habe einen Code geschrieben, welcher bei dem Schritt die gefilterten NV Einträge zu löschen nicht funktioniert. Das komische ist, dass er 2 oder 3 mal es gemacht hat und dann nicht mehr. Vielleicht wisst ihr ja was falsch ist.
LG

Sub anwenden()
Set ti = Worksheets("Eingabe")
Set tl = Worksheets("Datenbank")
APP_PASSWORD = "Test"
If MsgBox("Können die Daten gespeichert werden?", vbYesNo) = vbYes Then
If MsgBox("Sind Sie sich sicher?", vbYesNo) = vbYes Then
Sheets("Datenbank").Unprotect Password:=APP_PASSWORD
x = ti.Cells(ti.Rows.Count, 1).End(xlUp).Row
' Zeitstempel und Status in den neuen Daten einfügen
ti.Range("H1:I1").Copy
ti.Range("H2:I" & x).PasteSpecial xlPasteValues
' Daten in die Datenbank markieren und kopieren
ti.Range("A2:I" & x).Copy
' Daten in die Datenbank einfügen
y = tl.Cells(tl.Rows.Count, 1).End(xlUp).Row + 1
tl.Range("A" & y).PasteSpecial xlPasteValues
' Daten aus Eingabereiter löschen
ti.Range("A2:I" & x).ClearContents
' Tabelle erweitern zwecks Auswertung Potetial Verdichtung
l = tl.Cells(tl.Rows.Count, 1).End(xlUp).Row
tl.ListObjects("Tabelle1").Resize Range("$A$1:$G" & l)
' #NV Zeile(n) löschen
y = tl.Cells(tl.Rows.Count, 1).End(xlUp).Row
tl.Range("$A$2:$AI$" & y).End(xlUp).AutoFilter Field:=1, Criteria1:="#NV"
Application.DisplayAlerts = False
EndRow = tl.Cells(tl.Rows.Count, 9).End(xlUp).Row
tl.Range(Cells(2, 1), Cells(EndRow, 9)).SpecialCells(xlCellTypeVisible).Delete
Application.DisplayAlerts = True
tl.AutoFilterMode = False
tl.ShowAllData
' Blattschutz wieder aktivieren
Sheets("Datenbank").Protect Password:=APP_PASSWORD, userInterfaceOnly:=True, DrawingObjects:=True, _
Contents:=True, Scenarios:=True
Else
End If
Else
End If

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sichtbare Zeilen löschen
07.07.2022 07:29:45
Oberschlumpf
Hi Björn
Eine Idee hab ich:
Enthalten die Zellen Formeln, in denen #NV steht?
Dann verwende in der Formel zusätzlich die Funktion =WennFehler()
Dann könnte als Ergebnis in den Zellen nicht mehr #NV sondern "" stehen, und du müsstest Zeilen mit zuvor #NV nicht mehr löschen.
Wenn dir diese Idee aber so gar nicht weiterhilft, dann zeig bitte per Upload eine Bsp-Datei mit Bsp-Daten, so dass man dein Problem verstehen kann.
Ciao
Thorsten
AW: sichtbare Zeilen löschen
07.07.2022 09:04:03
Dennis
Hi Thorsten,
Formeln sind nicht enthalten. Lediglich die Werte werden kopiert.
Habe eine Beispieldatei angehangen.
https://www.herber.de/bbs/user/154036.xlsm
Anzeige
AW: sichtbare Zeilen löschen
07.07.2022 09:06:51
Björn
Nicht über den Namen wundern. Nutze hierfür kurz den Account von meinem Kollegen, da ich mich hier noch nicht angemeldet habe. :)
AW: sichtbare Zeilen löschen
07.07.2022 09:42:18
Herbert_Grom
Hallo Björn,
probiers mal damit:
https://www.herber.de/bbs/user/154038.xlsm

Option Explicit
Sub ZeilenMit_NV_Loeschen()
Dim lLastRow&, lCount&
lLastRow = Cells(Rows.Count, "A").End(xlUp).Row
For lCount = lLastRow To 2 Step -1
If Cells(lCount, 1).FormulaR1C1 = "#N/A" Then Cells(lCount, 1).EntireRow.Delete
Next lCount
End Sub
Servus
AW: sichtbare Zeilen löschen
07.07.2022 11:57:42
Björn
Hallo Herbert,
dein Code funktioniert super. Ich hatte mir überlegt, das ganze jetzt dynamisch zu machen, falls ich etwas anderes löschen möchte. Habe jetzt mal nur den Teil als Code eingefügt, da ich diesen nur um 1 Zeile ergänzt habe. Allerdings macht er nicht das Then sondern geht direkt zu next. Weißt du wo mein Denkfehler ist?
in Zelle M6 trage ich immer den Suchbegriff ein
VG

            Eingabe = tl.Cells(6, 13)
For lCount = EndRow To 2 Step -1
If tl.Cells(lCount, 1).FormulaR1C1 = Eingabe Then

Anzeige
AW: sichtbare Zeilen löschen
07.07.2022 12:05:03
Yal
Hallo Björn,
wenn Du eine Satz anfängst, dann machst Du diesen auch zu Ende.
Also bei Coding, das Du hier teilst:
_ Ein Su b hat einen End Sub
_ Ein For hat einen Next
_ Ein If hat einen End If
So Sprichst Du mit dein VBA-Kompiler. Auf Coding-Ebene mit uns auch. ;-)
Vielen Dank dafür.
VG
Yal
AW: sichtbare Zeilen löschen
07.07.2022 12:10:39
Yal
Hallo Björn,
verwende die Variabledeklaration: "Option Explicit", unter Extras >> Optionen... >> Variabledeklaration erforderlich.
Es ist den Anfänger lästig, aber Profis (siehe Herbert) benutzen alle diese Einstellung. Warum wohl?
probiere:

Option Explicit
Sub Test()
Dim Ref As Range
Set Ref = tl.Cells(6, 13)
For lCount = EndRow To 2 Step -1
If tl.Cells(lCount, 1).Value = Ref.Value Then
End If
Next
End Sub
VG
Yal
Anzeige
AW: sichtbare Zeilen löschen
07.07.2022 14:17:59
Herbert_Grom
Du solltest schon den ganzen Code verwenden!
AW: sichtbare Zeilen löschen
08.07.2022 08:26:19
Björn
Hallo Herbert, Yal,
sorry das ich nur einen Teil verwendet habe. In Zukunft werde ich immer den ganzen Code nehmen :)
Hier der Code:
Habe formula durch Range ersetzt. Aktuell funktioniert es auch. Oder seht ihr einen Grund warum es nicht gehen kann?
VG

Private Sub CommandButton1_Click()
Set th = Worksheets("Historie")
Set tl = Worksheets("Datenbank")
Set ts = Worksheets("Speicher")
APP_PASSWORD = "Test"
Application.DisplayAlerts = False
Application.ScreenUpdating = False
tl.Cells(1, 13).ClearContents
tl.Cells(1, 13) = TextBox1.Text
Unload Me
If MsgBox("Ist es eine Lagerung und der Kunde braucht die Informationen?", vbYesNo) = vbYes Then
If MsgBox("Muss die Vorlage für Kunde mit den Information von welchem Typ die Daten kommen geleert werden?", vbYesNo) = vbNo Then
If MsgBox("Sind Sie sich sicher?", vbYesNo) = vbYes Then
EndRow = tl.Cells(Rows.Count, "A").End(xlUp).Row
x = th.Cells(Rows.Count, 1).End(xlUp).Row + 1
y = ts.Cells(Rows.Count, 1).End(xlUp).Row + 1
Eingabe = tl.Cells(1, 13)
m = 0
' Zeile in den Speicher und Reiter für Kunde kopieren
For lCount = EndRow To 2 Step -1
If tl.Cells(lCount, 1).Value = Eingabe Then
tl.Range(Cells(lCount, 1), Cells(lCount, 7)).Copy
th.Cells(x, 1).PasteSpecial xlPasteValues
ts.Cells(y, 1).PasteSpecial xlPasteValues
tl.Cells(lCount, 1).EntireRow.Delete
' Zeitstempel und Status in den neuen Daten einfügen
ts.Range("M1:N1").Copy
ts.Cells(y, 8).PasteSpecial xlPasteValues
' Variable raufsetzen
m = m + 1
x = x + 1
y = y + 1
End If
Next lCount
If m = 0 Then
MsgBox "Es wurde keine Daten " & Eingabe & " gefunden!"
Else
MsgBox ("Es wurde nichts übertragen")
End If
Else
End If
Else
End If
Else
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige