Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1388to1392
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

Spalte filtern wenn....

Spalte filtern wenn....
06.11.2014 08:46:20
Jan
Schönen guten Morgen,
ich habe ein kleines Problem und tue mich ziemlich schwer damit. Ich bekomme ausgefüllte Templates von Lieferanten, die ich mit einem Makro in richtige Form bringen muss. Wie kann ich eine Spalte so auswerten, dass wenn alle Zellen gefüllt sind das Makro weiter läuft und falls nicht die leeren Zellen gefiltert werden und das Makro mit einer MsgBox die Fehlermeldung ausgibt.
1. Makro soll Spalte überprüfen bis zur letzten Zeile ob leere Zellen dazwischen sind
2. Falls nein dann weiter
3. Falls ja dann filtern, leere Zeilen ausgeben und MsgBox mit z.B. "Leerzeichen nicht erlaubt"
Ich habe einige Versuche hinter mir und entweder bekomme ich die Leerzeichen nicht ausgegeben oder ich bekomme zu den Leerzeichen zusätzlich auch all die gefiltert, die sich unter der letzten gefüllten Zeile befinden.
Vielen Dank im Voraus!
Grüße
Jan B.

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

Betreff
Datum
Anwender
Anzeige
AW: Spalte filtern wenn....
06.11.2014 10:34:14
Beverly
Hi Jan,
vom Prinzip her vielleicht so:
Sub LeereFeststellen()
If ActiveSheet.AutoFilterMode = False Then Columns("C:C").AutoFilter
ActiveSheet.Range("C1:C13").AutoFilter Field:=1, Criteria1:="="
If Range("C1:C13").SpecialCells(xlCellTypeVisible).Count > 1 Then
MsgBox "Leerzeichen nicht erlaubt"
Else
MsgBox "Alles i.O."
End If
ActiveSheet.ShowAllData
End Sub
In C1 steht eine Überschrift, die nicht mit gefiltert wird. Bereich musst du selbstverständlich anpassen.


Anzeige
AW: Spalte filtern wenn....
06.11.2014 10:55:50
Jan
Hi Beverly,
vielen Dank für deine Antwort.
Leider ist das gerade mein Problem. Der Bereich ist jedes Mal anders also sollte das Makro zuerst den Bereich bestimmen und anschließend überprüfen, ob wie in deinem Beispiel in Spalte C sich Leerzeichen befinden und sie ggf. dann filtern.
Gruß
Jan

AW: Spalte filtern wenn....
06.11.2014 11:32:08
Beverly
Hi Jan,
und wodurch bestimmt sich dein Bereich? Ist es immer eine andere Spalte oder kann nur die Zeilenanzahl in der betreffenden Spalte unterschiedlich sein?
Ohne deine mappe zu kennen ist das leider nur ein "Stochern im Nebel".


Anzeige
AW: Spalte filtern wenn....
06.11.2014 12:02:20
Jan
Hallo Beverly,
habe jetzt endlich die Lösung gefunden
...
Range(cells(2, 14), cells(ZeileMax - 1, 14).End(xlToLeft)).Select
For Each Zelle In Selection
If IsEmpty(Zelle) = True Then
With Range("N1").CurrentRegion
.AutoFilter field:=14, Criteria1:="="
End With
MsgBox "Leerzeichen nicht erlaubt"
Exit Sub
Else
...
Ich habe hier einen Fehler bei der Bestimmung der Range gehabt, mein Makro hat die komplette Tabelle durchgesucht und anschließend Spalte N nach leer gefiltert.
Ich danke dir vielmals für deine Hilfe.
Gruß
Jan

Anzeige
AW: Spalte filtern wenn....
06.11.2014 12:16:32
Beverly
Hi Jan,
man muss nicht selektieren - das sollte es ebenso tun, auch wenn ich nicht verstehe, wozu das gut sein soll, dass alle Zellen durchlaufen werden um eine Filter zu setzen:
For Each Zelle In Range(cells(2, 14), cells(ZeileMax - 1, 14).End(xlToLeft))


AW: Spalte filtern wenn....
06.11.2014 12:38:57
Jan
Hi Beverly,
vielen Dank für den Hinweis.
Der Filter soll nur gesetzt werden, wenn sich in Spalte 14 leere Zellen befinden. Es ist wichtig, dass das Makro an der Stelle angehalten wird und die Zeilen, die in der Spalte leere Zellen beinhalten zweck Nacharbeit eingeblendet werden - sonst soll das Makro weiter laufen.
Gruß
Jan

Anzeige
AW: Spalte filtern wenn....
06.11.2014 17:08:40
Beverly
Hi Jan,
das sollte auch ohne Scheife gehen:
Sub LeereFeststellen()
Dim lngLetzte As Long
' letzte belegte zeile in Spalte N
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 14)), _
Cells(Rows.Count, 14).End(xlUp).Row, Rows.Count)
' Anzahl an gefüllten Zellen ist kleiner als letzte belegte Zeile
If Application.CountA(Columns(14))  1  _
Then
MsgBox "Leerzeichen nicht erlaubt"
Else
MsgBox "Alles i.O."
End If
ActiveSheet.ShowAllData
End If
End Sub


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige