Anzeige
Archiv - Navigation
1624to1628
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

Abfragen Zeitraum

Abfragen Zeitraum
06.06.2018 09:22:39
fabian
Hallo,
Das ist mein erster Beitrag im Forum. Sorry sollte ich daher etwas übersehen/ nicht beachten! :)
Ich habe ein Tabellenblatt, dass sich automatisch durch ein anderes Workbook/Makro füllt. In Spalte 1 ist immer das Datum des Eintrages im anderem Workbook(durch Userform). Die restlichen Spalten in der Zeile sind mit Information befüllt zum Zwischenfall an diesem Zeitpunkt. Über einen CommandButton sollen die Eintraege (komplette Zeile) eines bestimmten Zeitraums (beispielsweise: 06/06/2018 bis 13/06/2018) kopiert und in ein neues Tabellenblatt in der Mappe kopiert werden. Das geschieht bisher mittels einer Userform und zwei DTPicker. Mithilfe einiger Recherchen in diversen Foren funktioniert das soweit besser als erwartet (Ohne grosse VBA Erfahrung bisher). Allerdings finde ich nicht wie ich das Datum zwischen den beiden eingegeben Daten abfragen kann. Das Makro bisher frägt nur genau die beiden Daten ab. Gibt es etwas wie eine "Zwischen zwei Daten"- Abfrage?
Das hier ist meine Funktion:
https://www.herber.de/bbs/user/121987.txt
Kann mir jemand weiterhelfen?
Vielen Dank!
Viele Gruesse
fabian

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfragen Zeitraum
06.06.2018 11:51:51
KlaWet
Hallo Fabian,
ich hab jetzt deine UserForm nicht nachgebaut, daher ist es nur ein ungetesteter Vorschlag.
Versuch mal
Option Explicit
Private Sub CommandButton2_Click()
Dim strName As String
Dim Start As Long
Dim Ende As Long
Dim n As Long
Dim rngDatum As Range
Dim Zelle As Range
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(2)
ActiveSheet.Name = DateFromMaster.Value & "  to  " & DateToMaster.Value & "(" & Worksheets. _
Count & ")" 'Name des neuen Tabellenblattes
'Kopfzeile immer auf neues Tabellenblatt kopieren
ActiveSheet.Range("A1:I1").Value = Worksheets("Sheet1").Range("A1:I1").Value
'Abfragen ob/welche Eintraege im Zeitraum vom DateFromMaster bis DateToMaster liegen, ganze  _
Zeile kopieren und im aktiven Tabellenblatt einfuegen
With Worksheets("Sheet1")
'* Start und Ende ermitteln
Set rngDatum = .Range("A:A")
For Each Zelle In rngDatum
If Zelle.Value = DateFromMaster.Value Then
Start = Zelle.Row
ElseIf Zelle.Value = DateToMaster.Value Then
Ende = Zelle.Row
End If
Next Zelle
'* Bereich übernehmen
n = 2
Set rngDatum = .Range("A" & Start & ":A" & Ende)
For Each Zelle In rngDatum
.Range(Zelle.Row & ":" & Zelle.Row).Copy ActiveSheet.Rows(n)
n = n + 1
Next Zelle
End With
Unload UFSelectTimeFrame
End Sub
Rückmeldung wäre nett
Gruß
KlaWet
Anzeige
AW: Abfragen Zeitraum
06.06.2018 13:10:07
fabian
Hallo KlaWet,
vielen Dank dir schonmal für deine Unterstützung! :)
Ich habe deinen Code probiert, bekomme allerdings einen Laufzeitfehler ('1004') bei
Set rngDatum = .Range("A" & Start & ":A" & Ende)
Könntest du nochmal einen Blick drauf werfen?
Viele Gruesse,
fabian
AW: Abfragen Zeitraum
06.06.2018 13:21:59
KlaWet
Eventuell erkennt er die Werte aus den DTPickern nicht als Datum.
Versuch folgendes:
...
If Zelle.Value = CDate(Fix(DateFromMaster.Value) Then
ElseIf Zelle.Value = CDate(Fix(DateToMaster.Value) Then
Gruß
AW: Abfragen Zeitraum
06.06.2018 13:27:09
fabian
Bringt leider das gleiche, negative Ergebnis..
Anzeige
AW: Abfragen Zeitraum
06.06.2018 13:29:14
KlaWet
Hm...
Könntest du mir dann mal eine Beispielmappe hochladen.
Danke!
AW: Abfragen Zeitraum
06.06.2018 15:27:50
KlaWet
Hallo,
so, letztlich hab's auch ich verstanden...
so sollte es jetzt funktionieren
Private Sub CommandButton2_Click()
Dim strName As String
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
Dim Start As Long
Dim Ende As Long
Dim rngDatum As Range
Dim Zelle As Range
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Move Before:=Sheets(2)
ActiveSheet.Name = DateFromMaster.Value & "  to  " & DateToMaster.Value & "(" & Worksheets. _
Count & ")" 'Name des neuen Tabellenblattes
'Kopfzeile immer auf neues Tabellenblatt kopieren
ActiveSheet.Range("A1:I1").Value = Worksheets("Sheet1").Range("A1:I1").Value
'Abfragen ob/welche Eintraege im Zeitraum vom DateFromMaster bis DateToMaster liegen, ganze  _
Zeile kopieren und im aktiven Tabellenblatt einfuegen
With Worksheets("Sheet1")
'* Start und Ende ermitteln
Set rngDatum = .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
For Each Zelle In rngDatum
If Zelle.Value >= CDate(Fix(DateFromMaster.Value)) And Zelle.Value 
Gruß
Anzeige
AW: Abfragen Zeitraum
06.06.2018 15:38:32
fabian
Funktioniert bestens! Vielen herzlichen Dank!
Gruss
fabian
AW: Abfragen Zeitraum
06.06.2018 16:13:28
KlaWet
Gerne
AW: Abfragen Zeitraum
07.06.2018 09:02:00
fabian
Hi nochmal!
Sorry, aber mir ist erst jetzt aufgefallen, dass wenn der Filter mit dem gleichen Anfangs- und Enddatum (also fuer einen bestimmten Tag gesucht werden soll) gesetzt wird, ein Laufzeitfehler entsteht. Könntest du nochmal einen Blick drauf werfen? Habe es selber noch nicht gelöst bekommen.
Danke vielmals nochmal!
Gruss
fabian
Endgültig gelöst! :)
07.06.2018 14:54:26
fabian
Habs hinbekommen!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige