Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro Verschieben von Zeilen in ein Archiv und löschen

Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 06:24:08
Stephan Schwander
Guten Morgen zusammen,

leider bin ich mit Makros nicht wirklich bewandert. Ich habe von einem Vorgänger eine Datei die ich angepasst habe. nun funktioniert leider das Makro "Archiv" nicht mehr.
Dies sollte alle Zeilen die in der Spalte X ein "x" zu stehen haben vom Tabellenblatt "Logbuch" nach "Archiv" verschieben. Leider kommt immer ein Laufzeitfehler
Das ganze dann wieder mit dem Passwort "logadmin" schützen.

Für alle Tabellenblätter gilt das Passwort "logadmin".

https://www.herber.de/bbs/user/173313.xlsm

Ggf. hat jemand eine Idee an was es liegt.

Besten Dank.

LG Stephan
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 07:51:21
MCO
Hallo Stephan!

Wenn ich mir das so anschaue, hatte dein Vorgänger auch nur eingeschränkt Ahnung.

Grund für den Fehler ist
a) Es wird im "Archiv" kein Autofilter gesetzt, jedoch gefiltert. (der ist aber auch nicht nötig, da der Filter nur gesetzt wird um sofort wieder gelöscht zu werden.)
b) Es wird auf Referenzbereich "Target" verwiesen, den gibt es aber nicht.

Dein neues Makro ist etwas kompakter:


Sub Archiv_neu()

Dim cut_rng As Range

If [Numarchiv].Value >= 1 Then

With Sheets("Logbuch")
.Unprotect "logadmin"
Sheets("Archiv").Unprotect "logadmin"
Sheets("Archiv").Range("a6:A" & [Numarchiv].Value + 5).EntireRow.Insert
If .FilterMode Then .ShowAllData 'Filter löschen

.Range("A5").AutoFilter Field:=24, Criteria1:=">" 'filter auf nicht leer (nicht "X"!)
Set cut_rng = .Range("A6:A" & .Range("A6").CurrentRegion.Rows.Count).SpecialCells(xlCellTypeVisible) 'betroffene Zeilen benennen

Application.EnableEvents = False
For Each zeil In cut_rng 'zeilen durchgehen
trgt = trgt + 1
With .Range("A" & zeil.Row & ":X" & zeil.Row)
.Copy Sheets("Archiv").Range("A5").Offset(trgt, 0) 'absichtlich nur copy, da sich sonst die Zeilen verschieben
.ClearContents 'löschen der Inhalte
End With
Next zeil
Application.EnableEvents = True

.Protect "logadmin"
Sheets("Archiv").Protect "logadmin"
End With
End If

End Sub


Statt beim Makro "Alle zeigen" erste einen Filter zu setzen nur um alle zu löschen könnte man einfach den Status abfragen und nur ggf. löschen:

Sub alle_zeigen()


With ActiveSheet
.Unprotect "logadmin" 'enleve la protection de la page
If .FilterMode Then .ShowAllData 'Filter löschen
.Protect "logadmin", DrawingObjects:=True, _
Contents:=True, Scenarios:=True, _
AllowFormattingRows:=True, _
AllowInsertingHyperlinks:=True, _
AllowFiltering:=True
End With
End Sub


im Private Sub Worksheet_Change(ByVal Target As Range) der Tabelle 1 schau dir mal die Möglichkeit "select case" an.
Wesentlich übersichtlicher als if then else

    Select Case Target.Column


Case 4
'ausführen
Case 8, 16
'ausführen
Case 18

Case Else
'alles andere
End Select

Gruß, MCO
Anzeige
AW: Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 11:25:32
Stephan Schwander
Besten Dank MCO für die Angaben.
Es funktioniert. nur kriege ich es nicht hin, dass dann auf dem Logbuch der Autofilter wieder aufgehoben wird. die Ausgeblendeten respektive gefilterten Zeilen werden dann nicht wieder eingeblendet.
https://www.herber.de/bbs/user/173318.xlsm

LG Stephan
Anzeige
AW: Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 12:30:51
MCO
Hi!

Du musst nur diese Zeile vor ".Protect "logadmin"" einbauen:

If .FilterMode Then .ShowAllData  'Filter löschen


Da du ja schon weißt, dass ein Filter gesetzt ist, genügt auch
.showalldata


Gruß, MCO
Anzeige
AW: Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 12:53:29
Stephan Schwander
Besten Dank MCO hat funktioniert. Super Hilfe!
Ich wünsche einen schönen Tag.

LG Stephan
AW: Makro Verschieben von Zeilen in ein Archiv und löschen
31.10.2024 12:54:48
Stephan Schwander
Besten Dank MCO für die tolle Hilfe.
Es funktioniert nun.
Ich wünsche dir weiterhin einen erfolgreichen Tag.
LG Stephan
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige