Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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
Datum als Formel nicht erkannt
12.07.2022 10:14:10
Mo
Hallo zusammen,
ich habe folgendes Problem:
und zwar hab ich in Excel in der Spalte L13 --> als Formel "DATUM(Zuweisung!$B$2;1;1)" stehen M13 dann "L13 + 1" usw.
Die Zellen sind alle als Datum formatiert.
Über die Userform Textbox1 und Texbox2 will ich das Datum finden.
Die Suchfunktion funktioniert nur wenn das Datum nicht per Formel hinterlegt ist.
Ich komme hier nicht weiter, kann mir einer helfen wie ich das hinbekomme wenn das Datum als Formel hinterlegt ist.
Hier ist der Quellcode dazu:

Private Sub CommandButton2_Click()
Dim str_mitarbeiter As String
Dim dat_von As Date
Dim dat_bis As Date
Dim str_kuerzel As String
Dim obj_wks_ziel As Worksheet
Dim lng_spalte_von As Long
Dim lng_spalte_bis As Long
Dim rng_fund As Range
Dim lng_zeile As Long
Dim lng_zaehler As Long
str_mitarbeiter = Me.ComboBox1
dat_von = TextBox1
dat_bis = TextBox2
str_kuerzel = Me.ComboBox2
Set obj_wks_ziel = ThisWorkbook.Worksheets("Urlaubsplanner")
With obj_wks_ziel
For lng_zaehler = 4 To .Cells(.Rows.Count, 4).End(xlUp).Row
If .Cells(lng_zaehler, 4) = str_mitarbeiter Then
lng_zeile = lng_zaehler
End If
Next
Set rng_fund = .Rows(13).Find(dat_von, LookIn:=xlValues, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_von = rng_fund.Column
End If
Set rng_fund = .Rows(13).Find(dat_bis, LookIn:=xlValues, lookat:=xlWhole)
If Not rng_fund Is Nothing Then
lng_spalte_bis = rng_fund.Column
End If
For lng_zaehler = lng_spalte_von To lng_spalte_bis
If Weekday(.Cells(13, lng_zaehler))  1 And Weekday(.Cells(13, lng_zaehler))  7 Then
.Cells(lng_zeile, lng_zaehler) = str_kuerzel
Cells(lng_zeile, lng_zaehler).Select
End If
Next
End With
Unload Me
End Sub
Textbox1 und 2 habe ich so formatiert:

Private Sub TextBox1_AfterUpdate()
TextBox1 = Format(TextBox1, "DD.MM.YYYY")
End Sub

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum als Formel nicht erkannt
12.07.2022 10:28:22
UweD
Hallo
ungetestet

Set rng_fund = .Rows(13).Find(cdbl(dat_bis), LookIn:=xlValues, lookat:=xlWhole)
LG UweD
AW: Datum als Formel nicht erkannt
12.07.2022 10:49:07
Mo
Hallo UweD
danke für deine Antwort, aber es funktioniert leider nicht.
Gruß Mo
AW: Datum als Formel nicht erkannt
12.07.2022 11:20:12
Daniel
Hi
wenn man mit .FIND ein Datum finden will, muss man, wenn die Zellen mit dem Standard-Datumsformat formatiert sind, den Suchtext im amerikanischen Datumsformat angeben, also Monat/Tag/Jahr
das wäre dann also ...Find(what:=Format(datvon, "\/MM\/DD\/YYYY"), ...
alternativ kann man auch mit Application.Match suchen, dann verwendet man den Zahlenwert und die Formatierung ist egal:
dann hätte man gleich die spaltnnummer:
lng_spalte_von = Application.Match(Clng(datvon), .Rows(13), 0)
wenn es vorkommen kann, dass das Datum nicht vorkommt, solltest du lng_spalte_von als Variant deklarieren.
dann kannst ählich wie mit IsNothing abfragen, ob die Suche erfolgtreich war:
If If IsNumeric(lng_spalte_von) then
da du deinen kalender vollständig und Lückenlos hast, kannst du die Spalte auch einfach berechnen nach dem Schema:
lng_Spalte_von = datvon - .range("L13").value + 12
also Spalte = gesuchtes Datum - erstest Datum im Kalender + erste Spalte Kalender.
Gruß Daniel
Anzeige
AW: Datum als Formel nicht erkannt
12.07.2022 13:40:35
Mo
Hi Daniel,
vielen Dank für deine Hilfe.
Es funktioniert nach wie vor nicht sobald ich das Datum ausschreibe geht es, wenn ich es mit einer Formel versehe
krieg ich die Fehlermeldung bei der Zeile mit If Weekday
If Weekday(.Cells(13, lng_zaehler)) 1 And Weekday(.Cells(13, lng_zaehler)) 7 Then
Gruß Mo
AW: Datum als Formel nicht erkannt
12.07.2022 13:53:20
Daniel
ohne die Datei zu kennen kann ich da nicht viel zu sagen.
Gruß Daniel
AW: Datum als Formel nicht erkannt
12.07.2022 14:45:16
Daniel
Kennst du den Unterschied zwischen einer FORMEL und einem WERT?
und was der Unterschied sein könnte, wenn man Excel anweist in den Formeln zu suchen und nicht nicht in den Werten (Values)?
das sollte eigentlich selbsterklärend sein. Vorallem, da du es selbst geändert hast, solltest du eigentlich wissen, was man macht.
Gruß Daniel
Anzeige
AW: Datum als Formel nicht erkannt
12.07.2022 14:47:59
Daniel
wenn du schon prüfst, ob der Suchwert gefunden wurde (If not rngfound is nothing), dann solltest du auch was programmieren für den Fall, dass das Datum nicht gefunden wird und nicht einfach fröhlich weitermachen, als wäre alles in ordnung.
Gruß Daniel
AW: Datum als Formel nicht erkannt
12.07.2022 15:20:53
Mo
Hallo Daniel,
ich bin in der Hinsicht ein Neuling, das habe ich mir bis jetzt alles ohne jegliches Fachwissen erarbeitet.
Ich bin dabei es noch zu verfeinern und hier habe ich lediglich um eine Hilfestellung zum Thema Datumsformat gebeten.
Gruß Mo
AW: Datum als Formel nicht erkannt
12.07.2022 15:37:40
Daniel
ja, und du hast in der Suche die Einstellung, wo gesucht werden soll (LookIn) von xlValues auf xlFormulas geändert.
damit sucht Excel den angegeben Inhalt nicht mehr in den angezeigten Werten, sondern im Text der Formel.
solange du keine Formeln in den Zellen hast, sondern feste Werte, macht das keinen großen unterschied. Aber sobald du Formeln in den Zellen hast, musst du da schon die richtige Einstellung wählen.
da du das im Vergleich zu dem Code in deiner Eingangsfrage geändert hast, muss ich davon ausgehen dass du das bewusst gemacht hast und die Frage wäre, warum.
Gruß Daniel
Anzeige
AW: Datum als Formel nicht erkannt
12.07.2022 15:49:28
Mo
Ich hatte Formeln in den Zellen, habe feste werte draus gemacht zum testen ob ich auf dem richtigen weg bin.
Ich möchte es wie beschrieben auf Basis einer Formel und nicht auf feste Werte.
Gruß Mo
AW: Datum als Formel nicht erkannt
12.07.2022 15:55:46
Daniel
und wenn du in den Ergebnissen der Formel (Datumswerte) suchen willst und nicht in den Formeltexten (=L13+1), musst du eben die Einstellung xlvalues setzen und nicht xlformulas.
Da das ja im Prinzip die Umsetzung der Excelmenüfunktion "Suchen und Ersetzen" ist und dort genauso funktionier, sollte das bei Excel-gut bekannt sein.
Gruß Daniel
was man bei .FIND auch noch wissen muss
12.07.2022 16:24:01
Daniel
wenn man mit der Einstellung LookIn:=xlValues in den Formelergebnissen sucht, dann muss man nach dem Wert suchen der in der Zelle angezeigt wird, dh man muss das Zahlenformat der Zelle berücksichtigen.
Wenn du also nur Tag und Monat über das Zahlenformat anzeigen lässt, darfst du auch nur nach diesem suchen.
Weiterhin muss man beachten, dass VBA auch hier die Amerikanischen Formate braucht, also nicht den Punkt als Datumstrennzeichen, sondern den Slash / . wenn du also nach dem 3-Köningstag suchst, müsstest du mit What:="6/1" suchen, obwohl in der Zelle 6.1 angezeigt wird.
Also wie gesagt, die Suche mit .Find nach Datumswerten ist in VBA kompliziert und mit Tücken behaftet.
ich würde hier die Spalte so wie ich es dir schon gezeigt habe einfach berechnen.
Da dein Kalender lückenlos und aufsteigend sortiert ist und für jeden Tag eine Spalte reserviert hat, geht das am einfachsten.
oder mit Application.Match (welches der Excelfunktion VERGLEICH entspricht) dann nach dem Ganzzahlwert des Datums suchen. Hatte ich auch schon beschrieben.
Gruß Daniel
Anzeige
AW: was man bei .FIND auch noch wissen muss
13.07.2022 14:47:11
Mo
Hallo Daniel,
vielen Dank für deine großzügige Antwort.
es hat soweit alles geklappt, besten Dank.
hättest du eventuell noch einen Vorschlag wie ich das mit den Feiertagen am besten realisieren kann?
Damit in den Spalten nichts eingetragen wird.
Grüße Mo
AW: was man bei .FIND auch noch wissen muss
13.07.2022 15:08:16
Daniel
Hi
Feiertage mit Datum in eine neue Tabelle eintragen und dann mit Worksheetfunction.CountIF (ZählenWenn) prüfen, ob das Datum in der Feiertagsliste drin ist.
btw, alle Feiertage können in deutschland abhängig vom Jahr berechnet werden.
Entweder ist der Feiertag ein festes Datum im Jahr (1.5, 3.10 ggf 6.1) oder es berechnet nicht nach dem Ostersonntag (Christi Himmelfahrt = 40 Tage nach Ostern). Der Ostertermin lässt sich mit Hilfe der Osterformel für jedes Jahr berechnen (bitte googeln)
Gruß Daniel
Anzeige
AW: was man bei .FIND auch noch wissen muss
13.07.2022 15:19:24
Mo
Hi Daniel,
ist alles schon passiert.
In der Datei wo ich hochgeladen habe ist alles ersichtlich.
Mir ging es nur um den nächsten Schritt wie ich das nun kombiniere.
Gruß Mo
AW: was man bei .FIND auch noch wissen muss
13.07.2022 15:40:27
Daniel
naja, du hast es auch geschafft, zu programmieren dass die Wochendenden nicht eingetragen werden.
ob jetzt Wochentag von Datum = 1 oder gleich 7 oder in der Feiertagsliste vorhanden, ist doch im Prinzip das gleiche.
Gruß Daniel
AW: Datum als Formel nicht erkannt
12.07.2022 14:22:46
snb

Private Sub Userform_Initialize()
combobox1.list=sheets(1).cells(1).currentregion.value
End Sub

Private Textbox1_change()
if len(Textbox1)=10 and len(textbox2)=10 then
for j =0 to ubound(combobox1.list)
if cdate(Combobox1.List(j,3))=cdate(Textbox1) then exit for
next
if j

Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige