Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1004to1008
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
Probleme mit Autofilter
28.08.2008 14:57:00
onkelbobby
Hallo zusammen,
ich arbeite nun schon mehrere Monate an einer Excel-Datei, die mir (und meinen Kollegen) die Arbeit etwas erleichtern soll. Es geht um Personal-"Datenbanken".
Die Datei besteht aus mehrern Tabellen, die mit mehreren Makros ausgestattet sind.
In einer Tabelle liegen mir Personaldaten vor, die nach Namen sortiert sind. Jetzt wollte ich mir eine Geburtstagsliste basteln und habe mit meinen mageren VBA-Kenntnissen das folgendermassen gelöst:
Ich habe eine Combo-Box eingebaut, die mit den Werten "Alle Monate, Januar, Februar, März, ...usw" aus einer vorgegebenen Liste gefüttert wird.
Bei Auswahl des jeweiligen Monats sollen nur die Leute angezeigt werden, die in diesem Monat Geburtstag haben. Ausserdem soll eine Sortierung nach Tag erfolgen. Ich arbeite hier mit zwei Hilfsspalten, die mir Tag und Monat auslesen.
Das klappt auch alles sehr gut und wie gewünscht, nur taucht folgendes mir unerklärbares Problem auf:
Wenn ich in einer ANDEREN TABELLE (!!!) Zeilen einfügen will kommt die Fehlermeldung: "Laufzeitfehler 1004. Es konnte keine Liste gefunden werden. Markieren Sie eine einzelne in Ihrer Liste und führen Sie den Befehl danach erneut aus."
Es muss an unten stehendem Code liegen, da nach Entfernen dieses Codes alles funktioniert. Es war übrigens auch schon der Fall, dass beim Einfügen von Zeilen in der anderen Tabelle plötzlich in dieser Zeile der Autofilter gesetzt wurde!!!
Der Code der Combobox sieht folgendermassen aus (geht sicherlich irgendwie einfacher, jedoch bin ich in VBA nicht so fit):

Private Sub ComboBox4_Change()
Select Case ComboBox4.Value
Case "Alle Monate"
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Selection.AutoFilter
Selection.AutoFilter Field:=10, Criteria1:=""
Case "Januar"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="1"
Columns("AC:AC").Hidden = True
Selection.AutoFilter Field:=10, Criteria1:=""
Range("A2").Select
Case "Februar"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="2"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "März"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="3"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "April"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="4"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "Mai"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="5"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "Juni"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="6"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "Juli"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="7"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "August"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="8"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "September"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="9"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "Oktober"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="10"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "November"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="11"
Columns("AC:AC").Hidden = True
Range("A2").Select
Case "Dezember"
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=29, Criteria1:="12"
Columns("AC:AC").Hidden = True
Range("A2").Select
End Select
End Sub


Hat jemand ne Idee? Wie sollte der Code anders aussehen. Ich muss auch noch ein Feld "Geburtstagsliste aus" mit in die Combobox einbauen, mit dem ich wieder alle Daten anzeigen und nach Name sortiert anzeigen kann. Wie schaut der Code dafür aus?
Danke!

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Autofilter
28.08.2008 15:45:49
ChrisL
Hallo
Anhand des Codes ist nicht erkennbar, warum dieser in unerwarteten Situationen anspringt. Des Problem liegt m.E. in einem anderen Codeteil.
Trotzdem habe ich dir den Code mal etwas abgekürzt.
ungetestet:

Private Sub ComboBox4_Change()
Application.ScreenUpdating = False
Columns("AC:AC").Hidden = False
Range("A2:AD65536").Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("AC2").Select
Selection.AutoFilter
If ComboBox4.ListIndex > 0 Then _
Selection.AutoFilter Field:=29, Criteria1:=CStr(ComboBox4.ListIndex)
Columns("AC:AC").Hidden = True
Selection.AutoFilter Field:=10, Criteria1:=""
Application.ScreenUpdating = True
End Sub


Gruss
Chris

Anzeige
AW: Probleme mit Autofilter
28.08.2008 16:06:42
onkelbobby
Hi, Danke!
Bin mittlerweile selbst auf den Fehler gekommen.
Ich hatte die Combobox wie gesagt mit den Daten "Alle Monat, Januar, Februar, usw.." gefüllt. Diese Daten hatte ich in der Tabelle in der es zu Problemen kam als Liste stehen und habe diesen Bereich "Monate" genannt.
Ich hab den ganzen Sortier-Mist nach Monat jetzt rausgeschmissen und arbeite jetzt ohne Filter. Hab einfach ein Button eingefügt, mit dem mir nach Geburtsmonat und Tag sortiert wird. Das tuts auch.
Trotzdem danke für Deine Hilfe!

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige