Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1804to1808
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
Inhaltsverzeichnis

If-Funktion nach Filter

If-Funktion nach Filter
15.01.2021 12:37:02
Tim
Hallo Leute,
ich schreibe gerade ein skript, welches sheets filtert und das gefliterte in einen neuen sheet kopiert.
Ich bekomme aber eine Fehlermeldung sobald ich etwas filtere, dass nicht vorhanden ist. D.h. dann wird nichts kopiert und eine Fehlermeldung erscheint. Jetzt habe ich mir gedacht, dass ich eine IF-Funktion davor stelle.
-Falls nach dem Filter die Zelle leer ist, dann das "Kopieren" überspringen.
aber ich bekomme weiterhin Fehlermeldungen.
Sub Fehler ()
Set BereichJ = Worksheets("openclosedcases").UsedRange
BereichJ.AutoFilter Field:=7, Criteria1:="*01.2017*"
If IsEmpty(Sheets("openclosedcases").Range("A2").Value) = True Then
Worksheets("openclosedcases").Range("I4").Value = "Januar open:"
Worksheets("openclosedcases").Range("J4").Value = 0
Else
ThisWorkbook.Worksheets.Add.Name = "ZS"
Application.Goto (ActiveWorkbook.Sheets("openclosedcases").Range("A1"))
Worksheets("openclosedcases").Range("A:A").Copy _
Destination:=Worksheets("ZS").Range("A2")
End Sub

Im Endeffekt ist nach dem Filtern nichts zu sehen und mein "Then" müsste sich einschalten aber er geht weiter auf "else" erstellt mein ZS und bekomme die Fehlermeldung.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If-Funktion nach Filter
15.01.2021 12:43:43
Tobias
Hallo Tim,
der Filter entfernt natürlich nicht den Wert in "A2" sondern blendet ihn lediglich aus.
Schwer zusagen ob da der Fehler liegt aber ich würde es so mal vermuten.
Schöne Grüße
Tobias
AW: If-Funktion nach Filter
15.01.2021 13:57:01
Tim
Hallo Tobias,
ja du hattest diesbezüglich recht.
AW: If-Funktion nach Filter
15.01.2021 12:48:40
peterk
Hallo
Verwende:

If Bereichj.SpecialCells(xlCellTypeVisible).Rows.Count > 1 then ....
Peter
AW: If-Funktion nach Filter
15.01.2021 13:05:20
Daniel
Hi Peter
Nö, falsch.
Bereich.Rows.Count zählt nur die Zeilen des ersten Blocks, wenn der angegebene Zellbereich aus mehreren nicht zusammenhängenden Zellbereichen besteht.
Dh das Ergebnis wird hier schon 1, sobald zweite Zeile ausgeblendet ist, unabhängig davon was danach kommt.
Das einzige was diesbezüglich mit diskontinuierlichen Zellbereichen funktioniert ist Cells.Count.
Und damit Cells.Count das gleiche Ergebnis liefert wie Rows.Count, reduziert man den Zellbereich auf eine Spalte.
Gruß Daniel
Anzeige
AW: If-Funktion nach Filter
15.01.2021 14:13:36
Tim
Danke Peter
AW: If-Funktion nach Filter
15.01.2021 12:56:48
Daniel
Hi
Verwende mal folgende Prüfung um festzustellen, ob dein Filter ein paar Zeile zum kopieren hat:
If BereichJ.Columns(1).specialCells(xlcelltypevisible).Cells. Count > 1 then
Weiterhin: wenn du schon die ganze Spalte kopierst, dann darf die destination immer nur in Zeile 1 liegen, liegt die Zielzelle tiefer, kann Excel die ganze Spalte nicht einfügen, weil dann die letzten Zellen nicht mehr auf das Tabellenblatt passen.
Besser wäre es, wenn du in Zeile 2 einfügen willst, nur den benutzen Teil des Tabellenlatts zu kopieren und den hast du schon in einer Variablen:
             BereichJ.Columns(1).Copy _
Destination:=Worksheets("ZS").Range("A2")
Gruß Daniel
Anzeige
AW: If-Funktion nach Filter
15.01.2021 14:18:58
Tim
Hallo Daniel,
Danke für dein Code er funktioniert.
Und danke für die Info mit dem Spalten kopieren. Damit hatte ich die letzten Tage oft zu tun weil ich immer in Zelle 1 einfügen musste. Dadruch umgehe ich das.
Vielen Dank
Falls jemand das gleiche Problem hat wie ich:
Sub Fehler ()
Set BereichJ = Worksheets("openclosedcases").UsedRange
BereichJ.AutoFilter Field:=7, Criteria1:="*01.2017*"
If BereichJ.Columns(1).specialCells(xlcelltypevisible).Cells. Count > 1 then
ThisWorkbook.Worksheets.Add.Name = "ZS"
Application.Goto (ActiveWorkbook.Sheets("openclosedcases").Range("A1"))
Worksheets("openclosedcases").Range("A:A").Copy _
Destination:=Worksheets("ZS").Range("A2")
Else
Worksheets("openclosedcases").Range("I4").Value = "Januar open:"
Worksheets("openclosedcases").Range("J4").Value = 0
End Sub
Ich musste dadurch das then und das else austauschen.
Also, wenn was gezählt wird dann kopieren, ansonsten ....
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige