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

AutoFilter per VBA: kopiere Zeilen eines Monats

AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 11:56:19
Felix
Hallo Excel-Profis,
ich möchte gerne aus einer Datenbank Zeilen herausschneiden. Es soll vom Monat abhängig sein, welche Zeilen ausgeschnitten werden sollen.
Mein Ansatz ist nun, dies über einen AutoFilter per VBA zu lösen.
Der Anwender soll später auf einem UserForm das Jahr und den Monat auswählen können. Abhängig davon, soll in einer Tabelle nach diesem Monat im Jahr gefiltert werden. Anschließend sollen die gefundenen Zeilen in eine zweite Tabelle kopiert werden. Anbei dazu meine Beispieldatei.
https://www.herber.de/bbs/user/124484.xlsm
Ich habe für den Code des Commandbuttons bereits probiert, alle Einträge des Februars 2018 zu finden. Die Zeile Code habe ich mit dem Makrorekorder aufgezeichnet.
Sheets("Tabelle1").Range("$A$1:$B$23").AutoFilter Field:=1, _
Criteria1:=">=01.02.2018", Operator:=xlAnd, Criteria2:="

Händisch funktioniert diese Vorgehensweise einwandfrei. Beim Klick auf den Button erscheint jedoch kein einziges gefundenes Ergebnis in der gefilterten Liste.
Das Ganze soll wie zu Anfang beschrieben natürlich auch noch variabel (abhängig von Monat und Jahr) werden. Hat jemand eine Idee?
Viele Grüße
Felix

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

Betreff
Datum
Anwender
Anzeige
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 12:27:44
PeterK
Hallo

ActiveSheet.Range("$A$1:$B$23").AutoFilter Field:=1, Criteria1:=">=02/01/2018", Operator:=xlAnd, _
Criteria2:="

AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 12:44:59
Felix
Hallo Peter,
war ja klar, dass es wieder so etwas simples ist, woran ich festhänge.
Private Sub cmdKopieren_Click()
'Kopiere alle Zeilen der ausgewählten Monat/Jahr Kombi in Tabelle2
Dim StartDat As String
Dim EndDat As String
Monat = cboMonat.Text
Jahr = cboJahr.Text
Select Case Monat
Case "Januar":
StartDat = "01/01/" & Jahr
EndDat = "02/01/" & Jahr
Case "Februar":
StartDat = "02/01/" & Jahr
EndDat = "03/01/" & Jahr
Case "März":
StartDat = "03/01/" & Jahr
EndDat = "04/01/" & Jahr
Case "April":
StartDat = "04/01/" & Jahr
EndDat = "05/01/" & Jahr
Case "Mai":
StartDat = "05/01/" & Jahr
EndDat = "06/01/" & Jahr
Case "Juni":
StartDat = "06/01/" & Jahr
EndDat = "07/01/" & Jahr
Case "Juli":
StartDat = "07/01/" & Jahr
EndDat = "08/01/" & Jahr
Case "August":
StartDat = "08/01/" & Jahr
EndDat = "09/01/" & Jahr
Case "September":
StartDat = "09/01/" & Jahr
EndDat = "10/01/" & Jahr
Case "Oktober":
StartDat = "10/01/" & Jahr
EndDat = "11/01/" & Jahr
Case "November":
StartDat = "11/01/" & Jahr
EndDat = "12/01/" & Jahr
Case "Dezember":
StartDat = "12/01/" & Jahr
EndDat = "01/01/" & Jahr + 1
End Select
Sheets("Tabelle1").Range("$A$1:$B$23").AutoFilter Field:=1, Criteria1:=">=" & StartDat,  _
Operator:=xlAnd, Criteria2:="
Das ist jetzt mein Code zur variablen Eingabe. Funktioniert auch soweit ganz gut. Gibt es vielleicht noch eine Möglichkeit den zu kürzen?
Viele Grüße
Felix
Anzeige
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 13:19:20
ChrisL
Hi Felix
z.B...
Sub t()
Dim strMonat As String, strJahr As String
Dim datStart As Date, datEnde As Date
strMonat = "Dezember"
strJahr = "2018"
datStart = CDate("1." & strMonat & " " & strJahr)
datEnde = DateSerial(strJahr, Month(datStart) + 1, 1)
MsgBox Replace(Format(datStart, "MM/DD/YYYY"), ".", "/")
MsgBox Replace(Format(datEnde, "MM/DD/YYYY"), ".", "/")
End Sub

Funktioniert aber nur mit deutscher Spracheinstellung.
cu
Chris
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 13:57:17
Felix
Hallo Chris,
vielen Dank für deine Hilfe!
Habe das Ganze jetzt so eingekürzt:
strStartDat = Replace(Format(CDate("1." & cboMonat.Text & " " & cboJahr.Text), _
"MM/DD/YYYY"), ".", "/")
strEndDat = Replace(Format(DateSerial(strJahr, _
Month(CDate("1." & cboMonat.Text & " " & cboJahr.Text)) + 1, 1), _
"MM/DD/YYYY"), ".", "/")
Da ich ja nur den String für den Filter brauche, reicht mir das so.
Viele Grüße und Vielen Dank nochmal
Felix
Anzeige
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 13:52:53
Daniel
HI
wie schon geschrieben: um den Autofilter per VBA zu programmieren, brauchst du das Datum in der amerikanischen Schreibweise, dh Monat vorne und der Slash als Trennzeichen.
der Recorder hilft dir hier nicht weiter, denn der zeichnet nur das auf, was du eingibst, und bei der Direkteingabe in Excel verwendest du natürlich das Deutsche Format mit Tag zuerst und Punkt als Trennzeichen.
Private Sub cmdKopieren_Click()
Dim DatumVon As Date
Dim DatumBis As Date
If cobmonat.ListIndex =" & Format(DatumVon, "MM\/DD\/YYYY"), Operator:=xlAnd, _
Criteria2:="
Gruß Daniel
Anzeige
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 14:19:14
Felix
Hallo Daniel,
auch dir vielen Dank für deinen Beitrag.
Diese Variante kommt mir auch verständlicher vor, als die von Chris. 'Tut mir leid Chris, ist nicht böse gemeint :)
Nochmals Danke an alle Beitragenden.
Viele Grüße
Felix
AW: AutoFilter per VBA: kopiere Zeilen eines Monats
08.10.2018 14:23:27
ChrisL
Hi Felix
Muss dir nicht leid tun. Daniel hat es wesentlich besser gelöst u.a. sprachneutral (ListIndex) und Formatierung.
cu
Chris

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige