Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Datum suchen und darunter neue identische Zeile einfügen

Forumthread: Datum suchen und darunter neue identische Zeile einfügen

Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 22:05:47
BigGisY
Hi zusammen,

ich habe ein kleines Problem. Meine Sub findet nicht mehr das korrekte Datum. Ja es mag sein, dass es mit cDate gehen würde, aber aus optischen Gründen möchte ich nach dem aktuellen Datum in Spalte B auf dem Format TT stehen lassen. Das Datum steht jedoch klassisch als 19.03.2025 in der Spalte, so wie alle anderen Tage auch. Die Formatierung wurde nur bewusst auf TT angepasst. Aus irgendeinen Grund geht das jedoch von heute auf morgen nicht mehr.

Hier die Zeile um die sich alles dreht. Hiermit findet er gar kein Datum mehr.
Set rng = ActiveSheet.Cells.Range("B:B").Find(what:=Date, LookIn:=xlFormulas, lookat:=xlWhole)


Aus dem Grund habe den Code inzwischen überarbeitet überarbeitet. Hier die ganze Sub.



Private Sub today_Click()

Dim xRow As Integer
Dim rng As Range
Dim rngTo As Integer
Dim n As Integer
Dim searchDate As Date
searchDate = Date ' Aktuelles Datum

' Debugging Punkt: Überprüfen, ob der Wert in B gefunden wird
Debug.Print "Suche nach Datum: " & searchDate

' Datum in Spalte B suchen (und mit CDate sicherstellen, dass es als Datum erkannt wird)
'Das hier klappt, wenn ich in Excel nicht nur die Tage anzeigen lasse (Benutzerdefiniert TT), sondern das Format in Excel auf TT.MM.JJJJ anpasse. Das möchte ich aber nicht.
'Set rng = ActiveSheet.Columns("B").Find(what:=CDate(searchDate), LookIn:=xlValues, lookat:=xlWhole)

' Suche nach dem Datum in Spalte B und vergleiche nur den Tag (TT)
' Das hier findet immer nur den 19.01.2025
Set rng = ActiveSheet.Columns("B").Find(what:=Format(searchDate, "dd"), LookIn:=xlValues, lookat:=xlWhole)


' Überprüfen, ob das Datum gefunden wurde
If Not rng Is Nothing Then
Debug.Print "Datum gefunden in Zeile: " & rng.Row
rngTo = rng.Row + 30

' Schleife durch die Zeilen bis rngTo
For n = rng.Row To rngTo
Debug.Print "Zeile " & n & ": " & ActiveSheet.Cells(n, 2).Value
' Wenn der Wert entweder das nächste Datum ist oder die Zelle leer ist, breche ab
If ActiveSheet.Cells(n, 2).Value = searchDate + 1 Or ActiveSheet.Cells(n, 2).Value = "" Then
Exit For
End If
Next n

' Zeile für die neuen Daten festlegen
xRow = n
Debug.Print "Neue Zeile: " & xRow

' Neue Zeile einfügen und Werte zuweisen
Rows(xRow & ":" & xRow).Insert Shift:=xlDown
Cells(xRow, 1).Value = searchDate
Cells(xRow, 2).Value = searchDate

' Formeln aus der vorherigen Zeile kopieren und in die neue Zeile einfügen
Range("L" & xRow - 1 & ":O" & xRow - 1).Copy
Range("L" & xRow).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
Application.CutCopyMode = False

' Zelle C(xRow) auswählen
Range("C" & xRow).Select

Else
MsgBox "Datum nicht gefunden!"
Debug.Print "Datum nicht gefunden!"
End If

' Form geschlossen
Unload Datumswahl

End Sub


Ich hoffe Ihr habt eine Lösung für mich.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 22:30:22
Onur
Was genau steht denn in der Zelle, wenn du das Format auf "Standard" änderst?
AW: Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 22:48:42
ralf_b
von heute auf morgen? ....ändert sich bei VBA nichts ...eher an deinen Daten. Ist das denn noch ein Datum oder plötzlich ein Text, der da in den Zellen steht?
AW: Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 22:56:10
Ulf
Hi,

versuche mal:

    Set rng = ActiveSheet.Columns("B").Find(what:=searchDate, LookIn:=xlFormulas, LookAt:=xlWhole)


zu verwenden.
LookIn:=xlFormulas sucht in Formeln, LookIn:=xlValues in konstanten Werten. Wenn du gemischte Inhalte hast, dann in entweder Formeln oder Werte ändern.
hth
Ulf
Anzeige
AW: Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 23:59:11
BigGisY
@Ulf: Danke für die Erläuterung von LookIn. Als Quereinsteiger als reines Hobby, fehlen manchmal wichtige Inputs. Dein Hinweis war übrigens die Lösung. Jetzt läuft es wieder.

Besten Dank!
AW: Datum suchen und darunter neue identische Zeile einfügen
19.03.2025 23:49:49
BigGisY
Erstmal Danke für eure Beteiligung.

@Onur: Wenn ich das ist Standard ändere steht 45721 in der Zelle.

@ralf_b: Du hast Recht. Natürlich habe ich Anpassungen vorgenommen. Die ganze Datei wurde um 2 weitere Datenblätter, 2 Forms und einige Subs erweitert. Aber die Daten als solches sind immer noch die selben. Es ist eine Art Monatstagebuch (vom ersten bis zum letzen eine Monats) für Verkäufe. Jeder Tag hat eine Zeile. Sollte es einen weiteren Verkauf geben, nutze ich einen Button, der ein kleine Form öffnet um dort auswählen zu können wo die Zeile eingefügt werden soll. Heute oder am Vortag (Falls man mal einen Verkauf vergessen hat). Die neue Zeile wird immer hinter der letzten Zeile des ausgewählten Tag eingefügt und das mit all ihren Formeln, Dropdown Listen und Funktionen. Ich habe hier jedoch an einer ganz anderen Ecke der Tabelle oder Sub gearbeitet, weshalb mir die Vorstellung fehlt, dass diese Änderungen was damit zutun haben könnten.

@Ulf: Danke probiere ich gleich mal aus und gebe eine Rückmeldung.
Anzeige
AW: Datum suchen und darunter neue identische Zeile einfügen
20.03.2025 16:38:10
daniel
HI
wie die Kollegen schon schrieben: Datumssuche mit .Find ist in Excel problematisch.
wenn man nur in einer Zeile oder in einer Spalte suchen muss, ist Application.Match (entspricht der Excelfunktion VERGLEICH) häufig die einfachere Lösung, da hier die unformatierten Zahlenwerte in der Zelle verwendet werden:

aus:
Set rng = ActiveSheet.Columns("B").Find(what:=Format(searchDate, "dd"), LookIn:=xlValues, lookat:=xlWhole)

If Not rng Is Nothing Then


wird

x = application.Match(Clng(searchDate), ActiveSheet.Columns(2), 0)

if not isError(x) Then


x muss hier als VARIANT deklariert werden.
ist die Suche erfolgreich, enthält x die Zeilen- oder Spaltennummer der Fundstelle, ansonsten einen Fehler, was man aber wie gezeigt abfragen kann.
Korrekterweise muss man sagen, dass man nicht die absolute Zeilennummer erhält, sondern die Position innerhalb des durchsuchten Bereichs. Wenn man aber in der ganzen Spalte sucht, dann stimmt das mit der Zeilennummer überein.

Gruß Daniel
Anzeige
AW: Datum suchen und darunter neue identische Zeile einfügen
20.03.2025 07:38:01
ralf_b
freut mich das es doch so einfach war.
Vielleicht noch zur Erklärung: Diese Parameter sind global und wenn du die "normale" Suche auf dem Blatt verwendest und etwas im "Suchen"-Dialog umstellst, dann wirkt sich diese Umstellung auch auf die Range.find() funktion aus. Datumssuche mit Range.find() ist immer etwas besonders.
Anzeige

Forumthreads zu verwandten Themen

Anzeige