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
  Werte in anderes Tabellenblatt kopieren mit VBA Mario 5 81 Gestern, 00:16
Letzter Beitrag: Mario
  Excel Abfrage - Wie können einzelne Spalten auf einem Blatt dargestellt werden?? excelblower 3 61 21.01.2017, 16:04
Letzter Beitrag: GMG-CC
  Datumsbereich addieren und in Label schreiben tmessers 3 117 20.01.2017, 11:42
Letzter Beitrag: tmessers
  Berechnung von einem Blatt in das Andere grussgott 5 98 18.01.2017, 13:57
Letzter Beitrag: sturmrm
  VBA Code verschieben einer Zeile in anderes Tabellenblatt rebound6 1 50 18.01.2017, 13:13
Letzter Beitrag: RPP63
  Blatt schützen für "Anfänger" Calafati 8 110 18.01.2017, 08:04
Letzter Beitrag: BoskoBiati
  Nach 5 selben Zahlenerfassungen 6. +< Erfassung löschen oder rot markieren possertf 9 133 13.01.2017, 17:52
Letzter Beitrag: Ego
  Zeilen mit gleichem Datum in anderes Tabellenblatt kopieren Taximichel 12 180 12.01.2017, 19:50
Letzter Beitrag: schauan
  Zeile Farbig Markieren Juli88 7 91 09.01.2017, 15:16
Letzter Beitrag: steve1da
  Daten von Blatt 2 ins Blatt 1 einfügen Dulgon 5 72 09.01.2017, 14:11
Letzter Beitrag: steve1da

Gehe zu:


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