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!