2016-08-09 17 views
0

data on my Excel sheet Ich mag würde ein Datum in Spalte A finde Dies ist das Datum Format: "yyyy/mm/dd hh: mm: ss". Es hat nichts immer zu finden, aber das Datum, was ich für ist in der Spalte A. bin auf der Suche Dies ist ein Ausschnitt aus meinem Code:Suche Datum Wert in einer Spalte VBA

Dim LastDay As Date 
Dim strdate As String 
Dim rCell As Range 

strdate = Format(LastDay, "yyyy/mm/dd hh:mm:ss") 

Set rCell = Cells.Find(What:=CDate(strdate), After:=Range("A1"), LookIn:=xlValues _ 
     , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) 

If rCell Is Nothing Then 
MsgBox ("nothing") 
Else 

EDIT: Neuer Code pro Kommentar.

Sub Copy() 
    Dim LastDayRow As Long 
    Dim FirstDayRow As Long 
    Dim LastDay As Date 
    Dim FirstDay As Date 
    Dim rcell As Range 

    LastDayRow = Range("E" & Rows.Count).End(xlUp).Row 
    Range("E" & LastDayRow).Copy Range("G1") 
    FirstDayRow = Range("A" & Rows.Count).End(xlUp).Row 
    Range("A" & FirstDayRow).Copy Range("G2") 
    LastDay = Cells(LastDayRow, "E").Value 
    FirstDay = Cells(FirstDayRow, "A").Value 

    Set rcell = Cells.Find(What:=LastDay, After:=Range("A1"), LookIn:=xlFormulas _ 
       , LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext) 

    If rcell Is Nothing Then 
     MsgBox ("nothing") 
    End If 

End Sub 
+1

Aus dem Code, den Sie zur Verfügung stellen, es scheint nicht, dass Sie einen beliebigen Wert zu 'LastDay' Variable gesetzt. – Carrosive

+0

Der Code, den Sie schreiben, ist die Basis von xlValue. Der Datumsspeicher in Zellen ist eigentlich nur die Nummer. Daher können Sie es mit LookIn nicht finden: = xlValue –

+0

Es könnte auch sein, dass das Format (konvertiert das Datum in ein String-Format; und Sie suchen nach einem Datum – User632716

Antwort

0

das Problem war, das Format des Datums. Das "/" in diesem Datumsformat: JJJJ/MM/TT HH: MM: SS verwechselt den VBA-Lauf. Diese Codezeilen in der Quelldatei das Problem gelöst:

Sheet1.Range("A:A").Replace What:="/", Replacement:="." 
Sheet1.Range("A:A").NumberFormat = "yyyy/mm/dd hh:mm:ss" 
Sheet3.Range("E:E").Replace What:="/", Replacement:="." 
Sheet3.Range("E:E").NumberFormat = "yyyy/mm/dd hh:mm:ss" 
0

Datumstypen werden in Excel und VBA als Doppel gespeichert. Suchen Sie nach dem doppelten Wert anstelle des Datums, indem Sie den LookIn-Parameter in xlFormulas ändern. Sie können auch den MatchCase-Parameter weglassen (Sie verwenden den Standardwert).

Set rCell = Cells.Find(What:=LastDay, After:=Range("A1"), LookIn:=xlFormulas _ 
     , LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext) 

Beachten Sie, dass einige sinnlose Arbeit hier tun ...

strdate = Format(LastDay, "yyyy/mm/dd hh:mm:ss") 

... weil Sie werfen es einfach zurück auf ein Datum, wenn Sie Ihre Suche tun:

What:=CDate(strdate) 
+0

Ich änderte, was Sie empfohlen, aber immer noch nicht finden das Datum in der Spalte A. Wenn ich LastDay als Double gesetzt, stoppt das Makro mit Fehlermeldung .. – vergab

+0

@vergab - Ihr aktualisierter Code läuft vollkommen in Ordnung für mich Fehler bekommen Sie und wo? – Comintern

+0

rcell Wert ist "nichts", aber das Datum ist in der Spalte A. Dies ist das letzte Datum in Spalte E: 2016/08/02 18:16:21 und es ist auch in Spalte A – vergab

Verwandte Themen