Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
684to688
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
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Änderung im VBA-Code: Löschen statt verstecken

Änderung im VBA-Code: Löschen statt verstecken
19.10.2005 17:10:33
Gernot
Hallo!
Ich habe folgenden VBA-Code vorliegen, der Zeilen, denen in Spalte A jeweils der Text "inactive" voransteht, einfach ausblendet (...Hidden=True).

Private Sub CommandButton1_Click()
Dim zelle As Range
For Each zelle In Range("A11:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeFormulas, 2)
If zelle.Value = "inactive" Then
Rows(zelle.Row - 4 & ":" & zelle.Row).Hidden = True
End If
Next
End Sub

Da ich kein VBA-Kenner bin und mir der Code (der übrigens einwandfrei funktioniert) von jemandem hier geschrieben worden ist, habe ich folgende Bitte:
Der Code soll so bleiben wie er ist - mit der Änderung aber, dass die identifizierten Zeilen (wo "inactive" steht am Anfang) nicht ausgeblendet, sondern GANZ GELÖSCHT werden sollen!
Wer von euch kann mir da helfen und mir die Änderung mitteilen?
Das wäre schonmal eine GROSSE Hilfe und würde mir bereits genügen.
Des Weiteren würde ich gerne danach noch folgendes machen - aber das ist erstmal nur optional bzw. danach erst von Nöten:
2.) nachdem obiges Skript (die Schleife) ausgeführt worden ist, soll gleich im Anschluss an die Schleife der gesamte Tabellenbereich A11:N400 (also diese Matrix quasi) ausgeschnitten werden (würde man manuell mit STRG-X machen) und wieder eingefügt werden: aber nicht normal einfügen sondern "Inhalte einfügen" und dann statt Formeln etc. nur die Werte!!! Das Ziel ist es nämlich, dass die Formeln, die noch enthalten sind, wegfallen müssen! Das Layout etc. soll sich nicht ändern - dem normalen Excel-User soll vom ersten Draufsehen gar nicht auffallen, dass dieser Schritt 2.) unternommen worden ist.
3.) Im dritten und letzten Schritt soll in die Zelle A3 das aktuelle Datum geschrieben werden in der Form TT.MM.JJJJ. Damit soll dokumentiert werden, wann Schritt 2.) (und natürlich das darüber) gemacht worden ist.
Vielen Dank im Voraus für eure kompetente Hilfe!!!

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

Betreff
Datum
Anwender
Anzeige
AW: Änderung im VBA-Code: Löschen statt verstecken
19.10.2005 17:20:30
Werner
Hallo Gernot
Rows(zelle.Row - 4 & ":" & zelle.Row).EntireRow.Delete
Gruss Werner
STOPP!
19.10.2005 17:27:42
Volker
Hallo Gernot und Werner,
Rows(zelle.Row - 4 & ":" & zelle.Row).EntireRow.Delete löscht ja gleich 5 Zeilen, nicht nur die gefundene, oder täusch ich mich?
Der alte Code hätte also auch 5 Zeilen statt einer ausblenden müssen.
Rows(zelle.Row).Delete sollte vollkommen reichen.
zur 2. Frage:
Range("A11:N400").Copy
Range("A11").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
zur 3. Frage:
Range("A3") = Date
Gruß
Volker
Anzeige
AW: STOPP! Sorry
19.10.2005 17:31:13
Werner
Hallo Volker, Hallo Gernot
Sorry!
Ich habe den Code nicht durchgelesen, sondern nur die Zeile mit ausblenden gesehen und gedacht das diese zu löschen sei.
Gruss Werner
AW: STOPP! Sorry
19.10.2005 17:43:12
Gernot
Hallo Volker und hallo Werner,
erst einmal vielen Dank für Eure Hilfe!!!
Allerdings habe ich ein kleines Problem:
Wenn ich den Code jetzt so benutze wie folgt:
Dim zelle As Range
For Each zelle In Range("A3:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeFormulas, 2)
If zelle.Value = "inactive" Then
Rows(zelle.Row).Delete
End If
Next
... dann werden nicht alle Zeilen gelöscht mit dem Anfangswert in Ax "inactive", sondern immer nur ein paar. Ich muss öfters auf den CommandButton klicken, bis er endlich alle Zeilen mit "inactive" gelöscht hat. Wodran kann das denn liegen?
Anzeige
AW: STOPP! Sorry
19.10.2005 17:43:34
Gernot
Hallo Volker und hallo Werner,
erst einmal vielen Dank für Eure Hilfe!!!
Allerdings habe ich ein kleines Problem:
Wenn ich den Code jetzt so benutze wie folgt:
Dim zelle As Range
For Each zelle In Range("A3:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeFormulas, 2)
If zelle.Value = "inactive" Then
Rows(zelle.Row).Delete
End If
Next
... dann werden nicht alle Zeilen gelöscht mit dem Anfangswert in Ax "inactive", sondern immer nur ein paar. Ich muss öfters auf den CommandButton klicken, bis er endlich alle Zeilen mit "inactive" gelöscht hat. Wodran kann das denn liegen?
Anzeige
Vielleicht so?
19.10.2005 17:59:31
Werner
Hallo Gernot

Sub TEST()
For i = Range("A65536").End(xlUp).Row To 3 Step -1
If Cells(i, 1) = "inactive" Then Cells(i, 1).EntireRow.Delete
Next i
End Sub

Gruss Werner
oder auch so ?!
19.10.2005 18:05:12
Volker
While True
On Error GoTo weiter
Rows(Cells.Columns(1).Find("inactive").Row).Delete
Wend
weiter:
End Sub
hat den charmanten Vorteil, dass nicht jede Zelle in "A" durchsucht wird, geht also wesentlich fixer.
Gruß
Volker
AW: oder auch so ?!
19.10.2005 18:36:55
Gernot
Es funktioniert nun!!!
Vielen Dank euch beiden!!!!!!!!!!!!!!!!!!!!!!!!! Hoffe, ich kann euch auch mal irgendwann helfen ;-)
Anzeige
Gern geschehen. Danke für die Rückmeldung OT:-)
20.10.2005 07:16:21
Werner

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige