datensätz kopieren wenn datum im zeitbereich liegt
#1
Liebe Leute, ich hoffe ihr könnt mir weiterhelfen!
 
Seit mehr als 3 Arbeitstagen suche ich vergebens nach einer Lösung zu meinem Problem. Ich konnte zwar ähnlich eThemen finden, keines davon, konnte mir aber meine Frage beantworten.  Ich möchte euch in den folgenden Zeile die Problematik genauer erkllären und würde mich freuen, wenn mir jemand dabei auf die Sprünge helfen könnte. Selbst kann ich mich nur als VBA-Anfänger bezeichnen, bin jedoch gewollt VBA-know-how aufzugreifen.  Die bisherigen VBA Codes, habe ich mich aus verschiedenen Foren zusammengebastelt.

Folgende Problematik:

Ich arbeite gerade an einem Excel-File mit 2 Sheets. Ein Sheet heißt "Datenbasis", das andere Sheet heißt "Auswertung". Ich möchte die kompletten Datensätze aus dem Sheet "Datenbasis" in das Sheet "Auswertung" kopieren und einfügen (ab Zeile A7), wenn das Datum in Spalte F (ab F2, da in der ersten Zeile die Überschriften der Spalten stehen), sich im vordefinierten Zeitraum befindet. Der vordefinierte Zeitraum befindet sich im Sheet "Auswertung". Das "BeginnDatum" steht in Zelle A4 und das EndDatum steht in Zelle C4 mit dem Format dd.mm.yyyy. Dieser Bereich bleibt immer der gleiche. Das Sheet "Datenbasis" bleibt nicht gleich, sondern veränder sich mit. D. h. die Datensatzanzahl variiert.

Das Ganze soll bei einer Befehlsschaltfläche hinterlegt werden. Ich möchte im Prinzip ein Abfragetool erstelle, dass sich auf einen Zeitraum bezieht.

Folgender, nicht annähernd, richtiger Code, konnte ich mir aus dem Internet zusammenbasteln.


Code:
Private Sub ZeitraumBegrenzen_Click()


     'declare variables
    Dim fromDate, toDate As Date
    Dim MyResults As Worksheet, MyData As Worksheet, MyDates As Worksheet
     
    Set MyResults = Worksheets("Auswertung")
    Set MyData = Worksheets("Datenbasis")
    Set MyDates = Worksheets("Auswertung")
     
     'clear previous results
    'MyResults.Cells.Clear
     
     'attribute date values to variables
    fromDate = MyDates.Range("A4").Value
    toDate = MyDates.Range("C4").Value
     
     'convert to text format to allow filtering
    fromDate = Format(fromDate, "dd.mm.yyyy")
    toDate = Format(toDate, "dd.mm.yyyy")
     
    With MyData
         'removes autofilter
        If .FilterMode Then .ShowAllData
         'filter the data based on selected date values
        .Range("A:C").AutoFilter Field:=1, Criteria1:= _
        ">=" & fromDate, Operator:=xlAnd, Criteria2:="<=" & toDate
         'copy the filtered data
        .UsedRange.SpecialCells(xlCellTypeVisible).Copy
         'paste copied values to results sheet
        MyResults.Range("A7").PasteSpecial
    End With
     'select cell A1 in results sheet
    MyResults.Activate
    MyResults.Range("A1").Select
     
End Sub



Ich wäre dankbar, wenn mir jemanden bei meiner verzweifelten Suche nach dem richtigen Code weiterhelfen kann. Sollte mir jemand helfen, möchte ich mich schon im Vorraus bedanke.

Grüße an euch Excel-profis!

rotkiv
Top
#2
Hallo rotkiv,

lade doch einmal eine Beispieldatei hoch, damit wir deinen Ansatz besser verstehen und Anpssungen testen können.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#3
Grüß Dich Helmut!

Im Anhang findest du die Datei. Wie oben erwähnt, möchte ich, dass wenn man ein Datum im Sheet "Auswertung" in Zelle A4 und C4 eingibt (also Start- und Enddatum), dass im Tabellenblatt "Datenbasis" die Spalte F (Datumsspalte) überprüft wird und alle im Datumsbereich befindende Datensätze in das Tabellenblatt "Auswertung" kopiert werden. Ab Zeile A7, dazuvor noch die Zeilenüberschrift ist. Das Ganze sollte durch den Button "Zeitraum eingrenzen" geschehen.

Ich bin da einfach überfordert. :16:

Danke für die Bemühungen!!!

Gruß rotkiv


Angehängte Dateien
.xlsm   TEST.xlsm (Größe: 1,22 MB / Downloads: 4)
Top
#4
Hi,

siehe auch hier:

http://office-loesung.de/p/viewtopic.php?f=166&t=736500
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Top
#5
Hallo BoskoBiati!

Das ist mein Eintrag in einem anderem Forum. Ich bin auf der Suche nach einem voll-automatisierten Code, der in einer Befehlsschaltfläche integrierst ist....

Sukriya dost/Danke Freund
 

Gruß
rotkiv
Top
#6
Hallo Freund rotkiv,

bitte lies dir mal diesen Beitrag durch:  http://www.clever-excel-forum.de/misc.php?action=help&hid=10
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#7
Das tut mir leid. Ich wusste gar nicht, dass es so etwas gibt bzw. nicht erlaubt ist!

Ich hab versucht den Vorschlag von Hajo umzusetzen, kam aber nicht auf das erwünschte ergebnis.

Hier der Code:

Code:
Sub TEST()
'
' TEST Makro
'

'
    Sheets("Datenbasis").Select
    Range( _
        "Tabelle_Rückmeldungen_W_52_KOMPLETT.accdb[[#Headers],[LetzterWertvonBuchungsdatum]]" _
        ).Select
    ActiveSheet.ListObjects("Tabelle_Rückmeldungen_W_52_KOMPLETT.accdb").Range. _
        AutoFilter Field:=6, Criteria1:=">=" & Sheets("Auswertung").Range("A4"), Operator:=xlAnd, _
        Criteria2:="<=" & Sheets("Auswertung").Range("C4")
        ActiveWindow.SmallScroll Down:=-9
    Range("A38").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Auswertung").Select
    Range("A7").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Datenbasis").Select
    Range( _
        "Tabelle_Rückmeldungen_W_52_KOMPLETT.accdb[[#Headers],[LetzterWertvonBuchungsdatum]]" _
        ).Select
    ActiveSheet.ListObjects("Tabelle_Rückmeldungen_W_52_KOMPLETT.accdb").Range. _
        AutoFilter Field:=6
    Sheets("Auswertung").Select
    Range("A1").Select
    
End Sub

Weiß jemand, wo der Fehler begraben ist?
Top
#8
Hola,

der Vollständigkeit halber:

http://www.vba-forum.de/forum/View.aspx?...raum_liegt

Gruß,
steve1da
Top
#9
Hallo Steve1da!

super, dass du mich aufdeckst! ;;)ch hab nur nicht gewusst, dass sowas in der forencommunity verpönt ist.

Soll ich sie löschen?
Top
#10
Hi rotkiv,

deine Frage

Zitat:Soll ich sie löschen?

erübrigt sich eigentlich, wenn du den Beitrag hinter meinem Link richtig durchgelesen hast. In dem Beitrag steht unter anderem:


Zitat:2. Sollte es bereits geschehen sein, dann verlinkt die Beiträge in den Foren untereinander.

Da du es nicht getan hast, hat Steve den Link gesetzt. Die Erklärung, warum das getan werden soll, steht ebenfalls im Beitrag über CP.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste