PDA

Vollständige Version anzeigen : Heutige Datum Suchen "T"-Format


GERLE
23.08.2017, 12:53
Guten Tag

Ich habe in Zelle "F3" den 01.01.2017, dieses Datum addiere ich jeweils mit +1 bis zum Ende des Jahres bis Zelle "NM3".
Das Format all dieser Datumszellen: "T"

Ich würde nun gerne mit ausführen eines Makros das heutige Datum markieren.

Sub gehezuheute_1()
Dim ws As Worksheet, n As Long

Set ws = Worksheets("2011-2012")
n = CDbl(ws.Range("H2").Value)
Application.Goto reference:=ws.Range("B" & Application.Match(n, ws.Columns(2), 0)), Scroll:=True

Set ws = Nothing
End Sub

Habe diesen Code bereits hier in einem Beitrag gefunden, dieser durchsucht aber leider die Spalte nach unten und nicht die Zeile nach rechts. Kann jemand helfen den Code anzupassen oder hat eine bessere alternative?

rastrans
23.08.2017, 13:31
Hallo,

das Problem ist, das Application.Match die Position innerhalb einer Matrix zurück gibt. Also einen Zahlwert. Du benötigst in deinem Code aber einen Buchstaben, da du ja die Spalte suchst. Zudem ist nach einem Datum suchen immer blöd. Man weiss nie, wie das formatiert ist.

Sieht anders aus, macht aber vermutlich das, was du möchtest: Sub gehezuheute_1()
Dim ws As Worksheet
Dim lngDifferenz As Long

Set ws = ActiveSheet
lngDifferenz = DateDiff("d", ws.Cells(3, 6).Value, Date)
ws.Cells(3, 6).Offset(0, lngDifferenz).Select
End SubGrüsse rastrans

Jonas0806
23.08.2017, 13:40
Hallo,

das Problem ist, das Application.Match die Position innerhalb einer Matrix zurück gibt. Also einen Zahlwert. Du benötigst in deinem Code aber einen Buchstaben

Wieso sollte er einen Buchstaben benötigen? :confused:

da du ja die Spalte suchst. Zudem ist nach einem Datum suchen immer blöd. Man weiss nie, wie das formatiert ist.
Das hat doch mit der Formatierung nichts zu tun...Zugrunde liegt immer eine Zahl, solange keine Textfunktion darauf angewendet wurde.

In dem Code wird ja auch in einer Spalte gesucht, man muss das also einfach auf eine Zeile umschreiben....

Das sollte schon reichen (Kann man natürlich auch mit goto machen..)

With Worksheets("2011-2012")
.Cells(3, Application.Match(CLng(Now), .Range("3:3"), 0)).Select
End With

GERLE
23.08.2017, 13:40
Hi rastrans!
Den .Match-Code wollte ich nur als Anhaltspunkt mitgeben der mein Problem vll etwas deutlicher macht und zeigen, dass ich mich zuerst mit der "Suche" beschäftigt habe bevor ich andere belästige.

Herzlichen Dank für deine Hilfe & der Code macht genau das was ich möchte :)

GERLE
23.08.2017, 13:51
Hi Jonas0806

Auch danke für deine Hilfe. Mir gefällt auch diese Möglichkeit.
Kannst du mir vielleicht noch sagen, wieso er bei deinem Code das morgige Datum markiert?

With Worksheets("2011-2012")
.Cells(3, Application.Match(CLng(Now), .Range("3:3"), 0)).Select
End With

Er markiert im jetzigen Zeitpunkt den "24"(.08.2017)

Jonas0806
23.08.2017, 14:02
Hallo,

das liegt daran, dass der angefangende Tag aufgerundet wird (Die Stunden des Tages werden als Nachkommastellen angegeben). So kommt immer der aktuelle Tag raus.

With Worksheets("2011-2012")
.Cells(3, Application.Match(Application.RoundDown(Now, 0), .Range("3:3"), 0)).Select
End With

GERLE
23.08.2017, 14:10
Hallo Jonas,

da habe ich nun wieder etwas mehr dazu gelernt. Danke dir & noch einen ruhigen Tag!

RPP63neu
23.08.2017, 14:29
*Hüstel*
Sollte man nicht eher nach HEUTE() [date] statt nach JETZT() [now] suchen?
… und bei aufsteigenden Daten mit dem Inkrement 1 würde ich entweder die Spalte errechnen (dafür braucht es kein DateDiff()) oder mit dem dritten Match-Parameter 1 arbeiten.

Two cents,
Ralf

Jonas0806
23.08.2017, 14:39
Hi Ralf,
*Hüstel*
Sollte man nicht eher nach HEUTE() [date] statt nach JETZT() [now] suchen?
touché *ImmernochNachDemMittelfingerSmileySuchend* :grins: