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

Forumthread: trotz Autofilter neue Zeile einfügen

trotz Autofilter neue Zeile einfügen
jens
Hallo Foren-Gemeinde,
nachdem ich nun doch schon einige Zeit hier stöbere und meistens eine Lösung finde muss ich euch heute doch direkt bemühen.
Folgendes Problem treibt mich seit Tagen zum Wahnsinn:
Ich habe eine Planungsliste, welche sowohl Daten zu Versuchsträgern als auch die Wochenplanung für den Versuch enthält.
Nun ist diese Liste mit einem Autofilter belegt, welcher ermöglicht z.B. nach Prüfstand o.ä. zu sortieren.
Nun habe ich eine "Master"_Zeile geschaffen in welche neue Versuchsträger eingetragen werden und mit Hilfe eines Buttons in die aktuelle Prüfstandplanung integriert werden. (Einfach 3 Zeilen weiter unten in die Liste eingefügt"
Das läuft mit Pastespecial ab, da auch die Formatierung übernommen werden soll.
Das funktioniert auch hervorragend, bis zu dem Zeitpunkt, wenn ein Autofilter aktiv ist und zum Beispiel nur noch Prüfstand 4 angezeigt wird, kommt eine Fehlermeldung und der Code wird bei .PasteSpecial abgebrochen
hier der Code:
Rows("11:13").Copy hier wird der neue Versuchsträger eingetragen
Rows("15:17").Insert Shift:=xlDown bisher aktueller Eintrag, jetzt neue Zeile und Ziel
Rows("15:17").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
Rows("15:17").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Fehler bei gesetztem Filter ist:
PasteSpecial-Methode kann bei dem Range-Objekt nicht angewendet werden
Ich hoffe es kann mir jemand von euch erklären, wie ich trotz gesetzem Filter eine neue Zeile einfügen kann und diese dann auch befüllen kann.
Nach dem füllen, sollte die Zeile, falls nicht vom Filter getroffen, natürlich auch verschwinden!
Vielen Dank im Voraus und viele Grüße
Jens
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: trotz Autofilter neue Zeile einfügen
25.06.2010 17:04:36
fcs
Hallo jens,
das Problem kann man nur umgehen, indem man die gesetzten Filter in Variablen merkt, alle Daten anzeigt, die Daten kopiert und dann den Filter wieder setzt.
Ich hab jetzt nicht alle Autofiltervarianten bei den Criterien getestet, aber die wesentlichen sollten funktionieren.
Gruß
Franz
Sub DatenSatzEinfügen()
Dim wks As Worksheet, oFilter As Filter
Dim arrCriteria1() As String, arrOperator() As Long, arrCriteria2() As String
Dim arrON() As Boolean, bolFilter As Boolean
Dim iIndex As Long
On Error GoTo Fehler
Set wks = ActiveSheet
With wks
'Check ob Autofilter aktiv
If wks.AutoFilterMode = True Then
'Check ob Filter gesetzt
For Each oFilter In .AutoFilter.Filters
If oFilter.On = True Then
bolFilter = True
Exit For
End If
Next
If bolFilter = True Then
'Filtereinstellungen merken
ReDim arrCriteria1(1 To .AutoFilter.Filters.Count)
ReDim arrCriteria2(1 To .AutoFilter.Filters.Count)
ReDim arrOperator(1 To .AutoFilter.Filters.Count)
ReDim arrON(1 To .AutoFilter.Filters.Count)
For iIndex = 1 To .AutoFilter.Filters.Count
arrON(iIndex) = .AutoFilter.Filters(iIndex).On
If .AutoFilter.Filters(iIndex).On = True Then
arrCriteria1(iIndex) = .AutoFilter.Filters(iIndex).Criteria1
arrOperator(iIndex) = .AutoFilter.Filters(iIndex).Operator
arrCriteria2(iIndex) = .AutoFilter.Filters(iIndex).Criteria2
End If
Next
wks.ShowAllData
End If
End If
'Daten kopieren
.Rows("11:13").Copy 'hier wird der neue Versuchsträger eingetragen
.Rows("15:17").Insert Shift:=xlDown 'bisher aktueller Eintrag, jetzt neue Zeile und Ziel
.Rows("15:17").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
.Rows("15:17").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'Filter wieder setzen
If bolFilter = True Then
For iIndex = 1 To .AutoFilter.Filters.Count
If arrON(iIndex) = True Then
If arrCriteria2(iIndex) = "" Then
.AutoFilter.Range.AutoFilter Field:=iIndex, Criteria1:=arrCriteria1(iIndex)
ElseIf arrOperator(iIndex)  0 Then
.AutoFilter.Range.AutoFilter Field:=iIndex, _
Criteria1:=arrCriteria1(iIndex), _
Operator:=arrOperator(iIndex), _
Criteria2:=arrCriteria2(iIndex)
End If
End If
Next
End If
End With
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 1004 'Tritt auf, wenn nicht vorhandenes Criterium in Variable gelesen werden soll
Resume Next
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbNewLine & .Description
End Select
End With
End Sub

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Neue Zeile trotz Autofilter einfügen in Excel


Schritt-für-Schritt-Anleitung

Um eine neue Zeile in eine Excel-Tabelle einzufügen, während ein Autofilter aktiv ist, kannst Du den folgenden VBA-Code verwenden. Dieser Code merkt sich die aktuellen Filtereinstellungen, zeigt alle Daten an, fügt die neue Zeile ein und setzt die Filter anschließend wieder zurück.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub DatenSatzEinfügen()
    Dim wks As Worksheet, oFilter As Filter
    Dim arrCriteria1() As String, arrOperator() As Long, arrCriteria2() As String
    Dim arrON() As Boolean, bolFilter As Boolean
    Dim iIndex As Long
    On Error GoTo Fehler
    Set wks = ActiveSheet
    With wks
        'Check ob Autofilter aktiv
        If .AutoFilterMode = True Then
            'Check ob Filter gesetzt
            For Each oFilter In .AutoFilter.Filters
                If oFilter.On = True Then
                    bolFilter = True
                    Exit For
                End If
            Next
            If bolFilter = True Then
                'Filtereinstellungen merken
                ReDim arrCriteria1(1 To .AutoFilter.Filters.Count)
                ReDim arrCriteria2(1 To .AutoFilter.Filters.Count)
                ReDim arrOperator(1 To .AutoFilter.Filters.Count)
                ReDim arrON(1 To .AutoFilter.Filters.Count)
                For iIndex = 1 To .AutoFilter.Filters.Count
                    arrON(iIndex) = .AutoFilter.Filters(iIndex).On
                    If .AutoFilter.Filters(iIndex).On = True Then
                        arrCriteria1(iIndex) = .AutoFilter.Filters(iIndex).Criteria1
                        arrOperator(iIndex) = .AutoFilter.Filters(iIndex).Operator
                        arrCriteria2(iIndex) = .AutoFilter.Filters(iIndex).Criteria2
                    End If
                Next
                .ShowAllData
            End If
        End If
        'Daten kopieren
        .Rows("11:13").Copy 'hier wird der neue Versuchsträger eingetragen
        .Rows("15:17").Insert Shift:=xlDown 'bisher aktueller Eintrag, jetzt neue Zeile und Ziel
        .Rows("15:17").PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        .Rows("15:17").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        'Filter wieder setzen
        If bolFilter = True Then
            For iIndex = 1 To .AutoFilter.Filters.Count
                If arrON(iIndex) = True Then
                    If arrCriteria2(iIndex) = "" Then
                        .AutoFilter.Range.AutoFilter Field:=iIndex, Criteria1:=arrCriteria1(iIndex)
                    ElseIf arrOperator(iIndex) <> 0 Then
                        .AutoFilter.Range.AutoFilter Field:=iIndex, _
                            Criteria1:=arrCriteria1(iIndex), _
                            Operator:=arrOperator(iIndex), _
                            Criteria2:=arrCriteria2(iIndex)
                    End If
                End If
            Next
        End If
    End With
Fehler:
    With Err
        Select Case .Number
            Case 0 'alles OK
            Case 1004 'Fehlercode
                Resume Next
            Case Else
                MsgBox "Fehler-Nr.: " & .Number & vbNewLine & .Description
        End Select
    End With
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: PasteSpecial-Methode kann bei dem Range-Objekt nicht angewendet werden
    Stelle sicher, dass der Autofilter deaktiviert ist, bevor Du versuchst, eine neue Zeile einzufügen. Der oben bereitgestellte Code löst dieses Problem, indem er die Filtereinstellungen vorübergehend aufhebt.

  • Excel Filter wird nicht auf alle Zeilen angewendet
    Vergewissere Dich, dass der Autofilter korrekt eingerichtet ist. Manchmal kann es helfen, den Filter zu löschen und neu zu setzen.


Alternative Methoden

Eine weitere Möglichkeit, um die Daten zu filtern und in eine neue Tabelle einzufügen, ist die Verwendung der Funktion „Daten filtern und in neue Tabelle einfügen“. Hierbei kannst Du die gewünschten Daten auswählen und sie in ein neues Arbeitsblatt übertragen. Gehe dazu wie folgt vor:

  1. Setze den Autofilter auf die gewünschten Daten.
  2. Kopiere die gefilterten Daten.
  3. Füge sie in ein neues Arbeitsblatt ein.

Praktische Beispiele

Angenommen, Du hast eine Liste von Versuchsträgern mit verschiedenen Prüfständen. Um einen neuen Versuchsträger in die Liste einzufügen, während ein Autofilter aktiv ist, kannst Du den oben genannten VBA-Code verwenden. Dieser sorgt dafür, dass die neue Zeile korrekt eingefügt wird, ohne die Filtereinstellungen zu stören.


Tipps für Profis

  • Halte deine Excel-Version auf dem neuesten Stand, um von den neuesten Funktionen und Fehlerbehebungen zu profitieren.
  • Nutze benutzerdefinierte Funktionen in VBA, um wiederkehrende Aufgaben zu automatisieren.
  • Wenn Du häufig mit Filtern arbeitest, erwäge die Nutzung von benutzerdefinierten Ansichten, um verschiedene Filtereinstellungen schnell zu speichern und abzurufen.

FAQ: Häufige Fragen

1. Wie kann ich eine neue Zeile einfügen, ohne den Autofilter zu deaktivieren?
Du kannst den bereitgestellten VBA-Code verwenden, der die Filtereinstellungen merkt und sie nach dem Einfügen der neuen Zeile wiederherstellt.

2. Was passiert mit den Daten, wenn ich den Autofilter aufhebe?
Wenn Du den Autofilter aufhebst, werden alle Daten angezeigt. Daher ist es wichtig, die Filtereinstellungen nach dem Einfügen der neuen Zeile wieder zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige