Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


VBA - Datumsbereich markieren und in anderes Blatt kopieren
#1
Hallo,

ich bin am verzweifeln.
Suche seid einigen Stunden eine Lösung für folgendes Problem:
Ich habe eine Mappe mit einem Tabellenblatt.
Die Anordnung sieht wie folgt aus:
Spalte D = Datum
Spalte E = Belegnummer
Spalte F = Verwendungszweck
usw.

Diese Tabelle fülle ich nun mit ca. 2000 Daten, sprich Belegen.

Später möchte ich dann einen Datumsbereich per VBA Userform auswählen können z.B. 01.03.2014 bis 16.05.2014

Danach soll der gesamte Bereich, sprich Zeile x bis Zeile y kopiert werden.
Danach werden die Zeilen in ein anderes Tabellenblatt kopiert und ausgedruckt.

Kann mir da vielleicht jemand helfen???

Ich bin für jede Hilfe dankbar!!!

Den Code hier habe ich mal versucht, scheinbar addiert er allerdings stets die Tage dazu...
Zum Verständnis:
Textbox1 = 1.12
Textbox2 = 15.12

Bereich, der markiert und kopiert wird = 1.12 bis 16.12

Anderes Beispiel:
Textbox1 = 5.12
Textbox2 = 15.12

Bereich, der markiert und kopiert wird = 5.12 bis 20.12

Woran könnte es liegen? Ich nin am überlegen, komme aber einfach nicht drauf!

Wie würde denn der Code aussehen, wenn ich z.B. die beiden Textboxen austausche?
Sprich, dass die beiden Werte "von" und "bis" in Zellen geschrieben werden.
A1=5.5.2014
A2=7.7.2014

Code:
Private Sub CommandButton1_Click()
Dim rngLast As Range
Dim rngFirst As Range
With Worksheets("Auswertung-Eingabe")
  Set rngLast = .Range("D:D").Find(what:=CDate(TextBox2), after:=.Range("D1"), Lookat:=xlPart, searchdirection:=xlPrevious)
  If Not rngLast Is Nothing Then
   Set rngFirst = .Range("D:D").Find(what:=CDate(TextBox1), after:=rngLast, Lookat:=xlPart, searchdirection:=xlNext)
     If Not rngFirst Is Nothing Then
      .Range(rngFirst, rngLast).Resize(rngLast.Row, 3).Copy Worksheets("Tabelle2").Range("A1")
     End If
  End If
End With
End Sub

Jemand ne Idee???
to top
#2
Hallo,

ersetze folgende Codezeile

Code:
.Range(rngFirst, rngLast).Resize(rngLast.Row, 3).Copy Worksheets("Tabelle2").Range("A1")

durch diese (ungetestet)

Code:
.Cells(rngFirst.Row, 4).Resize(rngLast.Row - rngFirst.Row + 1, 3).Copy Worksheets("Tabelle2").Range("A1")
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
HannesBo
to top
#3
Hi,

ich glaube zwar, dass es mehrere Baustellen sind aber probier mal Folgendes:

Set rngLast = .Range("D:D").Find(what:=Cdbl(CDate(TextBox2)), after:=.Range("D1"), Lookat:=xlPart, searchdirection:=xlPrevious)

Erfahrungsgemäß sind Suchen nach Datenbereichen immer etwas komplexer.
Um zu testen ob überhaupt ein Datum gefunden wird, hier ein alternatives Makro, dass ein Datum in Spalte "D" finden sollte.

Code:
Sub DatumFinden()
    Dim strDate As String
    Dim zelle As Range

    strDate = InputBox("Geben Sie ein Datum ein:  (TT/MM/JJJJ)")

    If strDate = "" Then Exit Sub
    Set zelle = Worksheets("Auswertung-Eingabe").Columns("D").Find(CDate(strDate), LookIn:=xlValues, lookat:=xlWhole)

    If zelle Is Nothing Then
        MsgBox "Datum nicht gefunden!"
    Else
        MsgBox "Datum ist in Zelle " & zelle.Address
    End If
    
End Sub

"Meine Daten" in Spalte "D" sehen so aus:

Arbeitsblatt mit dem Namen 'Auswertung-Eingabe'
 ABCD
1   01.05.2014
2   02.05.2014
3   03.05.2014
4   04.05.2014
5   05.05.2014
6   06.05.2014
7   07.05.2014

ZelleFormatWert
D1TT.MM.JJJJ01.05.2014
D2TT.MM.JJJJ02.05.2014
D3TT.MM.JJJJ03.05.2014
D4TT.MM.JJJJ04.05.2014
D5TT.MM.JJJJ05.05.2014
D6TT.MM.JJJJ06.05.2014
D7TT.MM.JJJJ07.05.2014

Gruß
Max
to top
#4
Smile 
Hallo Steffl,
Bestens...Funktioniert 1a...vielen vielen Dank!!!!

Hallo Max,
auch Dir sag ich danke für die Hilfe!!!
to top
#5
Hallo...sorry...
habe den Code wie folgt geändert, jedoch passiert nichts wenn das Datum, welches ich in der Textbox2 eingebe, nicht in der Tabelle aufgeführt ist?
Also kann ich nur Daten auswählen, welche auch in der Tabelle enthalten sind.
Da ich aber nicht für jeden Tag eine Buchung habe, funktioniert es nun doch nicht so wie Steffl es vorgeschlagen hat.

Gehts denn irgendwie anders???

[code]
Private Sub CommandButton1_Click()
Dim rngLast As Range
Dim rngFirst As Range
With Worksheets("Auswertung-Eingabe")
Set rngLast = .Range("DBig Grin").Find(what:=CDate(TextBox2), after:=.Range("D1"), Lookat:=xlPart, searchdirection:=xlPrevious)
If Not rngLast Is Nothing Then
Set rngFirst = .Range("DBig Grin").Find(what:=CDate(TextBox1), after:=rngLast, Lookat:=xlPart, searchdirection:=xlNext)
If Not rngFirst Is Nothing Then
.Cells(rngFirst.Row, 4).Resize(rngLast.Row - rngFirst.Row + 1, 3).Copy Worksheets("Tabelle2").Range("A1")
End If
End If
End With
End Sub
to top
#6
Du könntest über den Autofilter arbeiten. Wenn Du ohnenhin mit einer UF arbeiten willst,
dann z.B. so:
Code:
Worksheets("Auswertung-Eingabe").Range("A1").AutoFilter field:=4, Criteria1:=">=" & _
        CDbl(UserForm1.TextBox1.Value), Operator:=xlAnd, Criteria2:="<=" & CDbl(UserForm1.TextBox2.Value)

Im Anschluß kannst Du abfragen, welche Zeilen sichtbar sind, eben die Deines gewählten Zeitraums, und dann
die sichtbaren Zeilen bzw. den benötigten sichtbaren Bereich kopieren.

Gruß
Max
to top
#7
Ich habe mal einen Auszug der Datei hinzugefügt...zu Testzwecken.
Wäre super, wenn mir da jemand weiterhelfen kann.


Angehängte Dateien
.xlsm   Pearseri.xlsm (Größe: 24,84 KB / Downloads: 5)
to top
#8
Hi Max,

ich weiss, es ist etwas spät, aber wärest Du so nett und würdest meine Mappe etwas umbauen :-).
Mit Autofilter habe ich noch nicht gearbeitet.
to top
#9
Hallo,

das ist eine typische Aufgabe für den Spezialfilter, wobei eine Pivottabelle auch zum gleichen Ziel führen würde.

Unten eine Beispielmappe mit Spezialfilter.


.xlsm   Datumssuche.xlsm (Größe: 22,53 KB / Downloads: 14)
Gruß Atilla

Excel 2007
to top
#10
Hi,

ich bin dran.
Hast Du die Spalten "A:C" gelöscht, oder sind diese auch in Deiner kompletten Version leer?

Gruß
Max
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Informationen aus anderem Tabellen Blatt übertragen caos 5 58 Gestern, 18:41
Letzter Beitrag: schauan
  Filtern Liste und Daten auf anderes Sheet kopieren Rabe 5 83 01.12.2016, 15:02
Letzter Beitrag: snb
  Worksheet_Deactivate() wie komme ich aus dem Blatt? IngoScha 8 53 25.11.2016, 16:25
Letzter Beitrag: IngoScha
  (berechnete) Teilbereiche in anderes Blatt kopieren Timo 12 219 23.11.2016, 16:29
Letzter Beitrag: Gast 123
  Zeilen aus einer Tabelle per Zufall auswählen und markieren Jordan 4 96 14.11.2016, 19:46
Letzter Beitrag: Jordan
  Listboxeintrag finden und markieren Usedom 2 53 09.11.2016, 20:39
Letzter Beitrag: Usedom
  VB Daten in anderes Tabellenblatt übertragen derhanfti 3 95 07.11.2016, 07:56
Letzter Beitrag: derhanfti
  Werte aus Blatt 1 nach Passworteingabe in Blatt 2 übertragen Atila2016 23 379 28.10.2016, 11:09
Letzter Beitrag: schauan
  Daten nach Entscheidung in anderes Blatt schreiben appelschnut 5 94 27.10.2016, 17:03
Letzter Beitrag: appelschnut
  Dynamisch Werte von einem anderen Blatt lesen Rapt0r 5 86 26.10.2016, 18:56
Letzter Beitrag: Rapt0r

Gehe zu:


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