Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
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

Makro: Datum anzeigen das Heute oder "kleiner" ist

Makro: Datum anzeigen das Heute oder "kleiner" ist
onkelbobby
Hallo,
ich habe in einer Tabelle in Spalte J Geburtsdaten.
Mit einem Button sortiere ich die Liste nach Geburtsdatum.
Ich möchte, dass nach der Sortierung das Feld das am nächsten zum heutigen Datum steht markiert wird.
(Also wenn Heute = Geburtstag, dann dieses Feld markieren - wenn keine Übereinstimmung dann das Feld das Datum, das am kürzesten vorüber ist, also eine Zeile vor dem nächstne Geburtstag).
Ist sicher kein großes Ding, ich bekomme das alleine aber nicht hin.
Danke,
Robert
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 15:23:30
fcs
Hallo Robert,
in welcher Form hast du denn die Geburtstage in Spalte J eingetragen?
Gruß
Franz
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 15:30:31
onkelbobby
Hallo Franz,
TT.MM.JJJJ
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 15:54:01
onkelbobby
Ich hab das mit dem heutigen Datum schon selbst hingebracht:
Dim dHeute As Date
Dim i As Integer
dHeute = Date
For i = 1 To [J65000].End(xlUp).Row
If Left(dHeute, 5) = Left(Cells(i, 10), 5) Then
Cells(i, 10).Select
End If
Next i
Jetzt ist nur noch die Frage, wie ich die Zelle vor dem nächsten Geburtstag markiere, wenn heut kein Geburtstag vorliegt?
Ich probiers selbst noch mal, bin aber dankbar für Tips!
Robert
Anzeige
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 16:12:43
Rudi
Hallo,
Sub tt()
Dim i As Long
For i = 1 To Cells(Rows.Count, 10).End(xlUp).Row
If Cells(i, 10) > Date Then
Cells(i - 1, 10).Select
Exit Sub
End If
Next i
End Sub

Gruß
Rudi
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 16:23:47
onkelbobby
Hallo Rudi,
das haut nicht ganz hin!
Die Daten sind ja nicht wirklich größer als das heutige Datum, sondern alle kleiner. Es geht um das Geburtsdatum. Es müssen also nur Monate und Tage verglichen werden.
Leider hab ichs auch noch nicht hingekriegt.
AW: Makro: Datum anzeigen das Heute oder "kleiner" ist
26.04.2010 16:28:29
fcs
Hallo Robert,
wenn du nach dem Geburtsdatum sortierst, dann entspricht das ja nicht der Reihenfolge der Geburtstage im aktuellen Jahr. Wenn 2 Personen am gleichen Tag aber unterschiedlichen jahren geboren wurden gibt es auch Probleme beim Suchen.
Besser/einfacher ist es, wenn du in einer weiteren Spalte per Formel den Geburtstag im laufenden Jahr berechnest und nach dieser Spalte sortierst. Dann kann man auch relativ einfach ein Datum relativ zum aktuellen Datum heraus suchen.
Gruß
Franz
Spalte J		Spalte K
Geburtstag	TT.MMM
01.01.1990	01.Jan
22.04.1998	22.Apr
25.04.1955	25.Apr
25.04.1990	25.Apr
25.04.1991	25.Apr
25.04.2001	25.Apr
30.04.2000	30.Apr
02.05.2000	02.Mai
Zelle	Formula-Local
$K$2	=DATUM(JAHR(HEUTE());MONAT(J2);TAG(J2))
$K$3	=DATUM(JAHR(HEUTE());MONAT(J3);TAG(J3))
usw.

Spalte K ist benutzerdefiniert formatiert als: TT.MMM
angepasstes Makro
Sub atest()
Dim dHeute As Date
Dim i As Integer
dHeute = Date
For i = 2 To [J65000].End(xlUp).Row
If dHeute = Cells(i, 11) Then
Cells(i, 10).Select
Exit For
ElseIf dHeute 

Anzeige
Datumsuche ohne Hilfsspalte
26.04.2010 16:41:05
Erich
Hi Robert,
probier mal

Option Explicit
Sub tt2()
Dim zz As Long, lngH As Long, lngD As Long, lngT As Long, zMerk As Long
lngH = 1 * Format(Date, "mmdd")
For zz = 1 To Cells(Rows.Count, 10).End(xlUp).Row
lngT = 100 * Month(Cells(zz, 10)) + Day(Cells(zz, 10))
If lngT  lngD Then
lngD = lngT
zMerk = zz
End If
Next zz
If zMerk > 0 Then Cells(zMerk, 10).Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Datumsuche ohne Hilfsspalte
26.04.2010 16:49:23
onkelbobby
Hallo Erich!
Ohne Hilfsspalte wäre mir schon recht (trotzdem danke für die Lösung von anderen Usern).
Dein Makro verstehe ich zwar gar nicht, scheint aber in einer Testdatei zu funktionieren.
In meiner eigentlichen Datei kommt jedoch der Laufzeitfehler 13. Ich vermute das hängt damit zusammen, dass in einigen Zeilen kein Datum eingetragen ist.
Wie kann ich das Makro dazu bringen, diese Zeilen zu ignorieren?
Danke!
Anzeige
AW: Datumsuche ohne Hilfsspalte
26.04.2010 16:55:57
onkelbobby
Seltsam,
habe gerade mal alle Daten die ohne Geburtstag waren mit Daten gefüllt. Trotzdem kommt der Laufzeitfehler 13 "Typen unverträglich" und nach dem Debuggen springt der Cursor in diese Zeile:
lngT = 100 * Month(Cells(zz, 10)) + Day(Cells(zz, 10))
Ich habe den Code hinter den Code für die Sortierung gehänt.
Ausgelöst wird das Modul durch einen Button.
Hier mal der komplette Code:
Sub Geburtstage()
Rows("3:65536").Select
Selection.Sort Key1:=Range("AC3"), Order1:=xlAscending, Key2:= _
Range("AD3"), Order2:=xlAscending, Key3:=Range("A3"), Order3:=xlAscending _
, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Dim zz As Long, lngH As Long, lngD As Long, lngT As Long, zMerk As Long
lngH = 1 * Format(Date, "mmdd")
For zz = 1 To Cells(Rows.Count, 10).End(xlUp).Row
lngT = 100 * Month(Cells(zz, 10)) + Day(Cells(zz, 10))
If lngT  lngD Then
lngD = lngT
zMerk = zz
End If
Next zz
If zMerk > 0 Then Cells(zMerk, 10).Select
End Sub
Was mache ich falsch?
Anzeige
AW: Datumsuche ohne Hilfsspalte
26.04.2010 17:00:26
onkelbobby
Kommando zurück!
Ich habs.
Da die erste Zeile bei mir leer ist, habe ich die Zeile wie folgt abgeänert:
For zz = 3 To Cells(Rows.Count, 10).End(xlUp).Row
Jetzt klappts.
vielen Dank!
Datumsuche ohne Hilfsspalte robuster
26.04.2010 17:08:40
Erich
Hi Robert,
erst mal zwei Bemerkungen:
Dim-Anweisungen würde ich immer vor allen anderen Anweisungen am Anfange der Prozedur platzieren.
Für meine Prozedur zur Geburtstagssuche müssen die Datums nicht irgendwie sortiert sein.
So läuft sie auch, wenn es leere Zellen oder z. B. Zellen mit Texten in Spalte J gibt:

Option Explicit
Sub tt2()
Dim zz As Long, lngH As Long, lngD As Long, lngT As Long, zMerk As Long
lngH = 1 * Format(Date, "mmdd")
For zz = 1 To Cells(Rows.Count, 10).End(xlUp).Row
If IsDate(Cells(zz, 10)) Then
lngT = 100 * Month(Cells(zz, 10)) + Day(Cells(zz, 10))
If lngT  lngD Then
lngD = lngT
zMerk = zz
End If
End If
Next zz
If zMerk > 0 Then Cells(zMerk, 10).Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige

65 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige