Wie kann ich in Excel eine Zeile mit VBA ausblenden und verschieben?

2 Antworten

Mal sehen ob ich verstehe was du machen willst, ich sags gleich, ich bin kein Freund vom Copy/Paste in VBA.

Sub Copy()

Sheets("Offen").Select

LetzteZeile = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row

For i = 1 To LetzteZeile

  If Cells(i, 12) = 1 Then

    Rows(i & ":" & i).Select

    Selection.Copy

    Sheets("Monat").Select

    LetzteZeileZwei = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row

    LetzteZeileZwei = LetzteZeileZwei + 1

    Rows(LetzteZeileZwei & ":" & LetzteZeileZwei).Select

    ActiveSheet.Paste

    Sheets("Offen").Select

'Hier haperts

'Wo speicherst du die Row ab die du hiden willst
'Erstelle eine Variable die für die Row zuständig ist
'weil Excel nicht wissen kannst welche Zeile gemeint 'ist.

    Selection.EntireRow.Hidden = True

  End If

Next i

End Sub
Woher ich das weiß:Berufserfahrung

Sind Quell und Zielbereich gleich groß dann kann man einfach "zuordnen".

Worksheets("Ziel").Rows(1:1).Value = Worksheets("Quelle").Rows(2:2).Value

Nahezu jeden Ablauf kann man ohne Select, Activate, etc lösen was VIEL Zeit spart im Makro Ablauf und auch diverse Events nicht auslöst, die ggf für andere Zwecke gebraucht werden.
Ggf landet dieser Befehl auf der falschen Zeile
End(xlUp).Row..
Dieser arbeitet NUR DANN zuverlässig wenn man KEINE Filterung aktiv hat.
Es ist also ratsam zunächst die möglichen Autofilter per Makro auszuschalten.


MustafaFreiburg 
Beitragsersteller
 16.11.2021, 10:03

GUten Tag, sorry ich kann dir nicht folgen....ich möchte nur wenn in der Spalte L die "1" eingetragen wurde, dass die Zeile AUsgeblendet wird und im "Monat" eingetragen wird :-)

IchMalWiederXY  16.11.2021, 12:50
@MustafaFreiburg

Deine Überprüfung ob in der Spalte L eine 1 eingetragen wird findet im Worksheets Change event statt.
Click Mal im Projekt Explorer auf das Object welches dem Blatt entspricht.
Dann im Procedur DropDwon Worksheets_Change aus wählen.
nun in dieser Prozedur die Spalte prüfen. UND Target.Value = 1
==
Dein Copy Befehl ist nicht optimal.