Warum erkennt mein Excel VBA-Makro das Datum im Arbeitsplan nicht, obwohl es als Datum hinterlegt ist, aber in einer anderen Tabelle als Zahl angezeigt wird?

Antwort

Das Problem liegt sehr wahrscheinlich an der Art, wie Excel intern mit Datumswerten umgeht. Ein Datum in Excel ist eigentlich eine Zahl (z.B. 45123 für den 01.09.2023), aber die Anzeige kann unterschiedlich sein – als Zahl, als Datum, als Text. Wenn du ein Datum per Formel erzeugst (z.B. `=A1` oder `=DATUM(...)`), kann es sein, dass beim Kopieren oder beim Vergleich mit VBA Unterschiede auftreten, insbesondere wenn das eine Feld als Zahl und das andere als Text formatiert ist. **Typische Ursachen und Lösungen:** ### 1. Unterschiedliche Formate (Datum vs. Text) - **Problem:** In `wsQuell.Range("B8")` steht das Datum als Zahl, im Arbeitsplan ist es vielleicht als Text oder per Formel erzeugt. - **Lösung:** Stelle sicher, dass beide Werte als Datum (also als Zahl) vorliegen. Du kannst das in VBA erzwingen: ```vba datumToFind = CLng(wsQuell.Range("B8").Value) ``` und beim Suchen: ```vba Set rGef = wsZiel.Columns("A").Find(What:=datumToFind, LookIn:=xlValues, LookAt:=xlWhole) ``` ### 2. Zeitanteil im Datum - **Problem:** Ein Datum kann auch eine Uhrzeit enthalten (z.B. 01.09.2023 00:00:00 vs. 01.09.2023 12:00:00). Das sieht gleich aus, ist aber intern unterschiedlich. - **Lösung:** Beim Vergleich nur das Datum nehmen: ```vba datumToFind = Int(wsQuell.Range("B8").Value) ``` und beim Suchen: ```vba Set rGef = wsZiel.Columns("A").Find(What:=datumToFind, LookIn:=xlValues, LookAt:=xlWhole) ``` ### 3. Formelzellen - **Problem:** In der Zieltabelle steht das Datum als Formel, z.B. `=Tabelle1!A1`. Das ist aber für den Wertvergleich egal, solange der Wert ein Datum ist. - **Lösung:** Prüfe, ob in der Zieltabelle wirklich ein Datum steht (kein Text!). Teste das z.B. mit: ```vba Debug.Print wsZiel.Cells(1, "A").Value, IsDate(wsZiel.Cells(1, "A").Value) ``` ### 4. Find-Methode: LookIn-Parameter - **Problem:** `LookIn:=xlValues` ist meist richtig, aber manchmal hilft auch `xlFormulas`. - **Lösung:** Teste beide Varianten: ```vba Set rGef = wsZiel.Columns("A").Find(What:=datumToFind, LookIn:=xlValues, LookAt:=xlWhole) If rGef Is Nothing Then Set rGef = wsZiel.Columns("A").Find(What:=datumToFind, LookIn:=xlFormulas, LookAt:=xlWhole) End If ``` --- **Zusammengefasst:** - Stelle sicher, dass du wirklich mit Zahlen (Datumswerten) vergleichst, nicht mit Text. - Nutze `CLng` oder `Int`, um den Zeitanteil zu entfernen. - Probiere ggf. beide `LookIn`-Varianten. - Prüfe mit `IsDate`, ob in beiden Zellen wirklich ein Datum steht. **Beispiel für robusten Vergleich:** ```vba Dim datumToFind As Long datumToFind = CLng(wsQuell.Range("B8").Value) Dim cell As Range For Each cell In wsZiel.Columns("A").Cells If CLng(cell.Value) = datumToFind Then Set rGef = cell Exit For End If Next cell ``` Das ist zwar etwas langsamer als `.Find`, aber sehr robust. --- **Tipp:** Wenn du weiterhin Probleme hast, prüfe die Werte mit `Debug.Print` im Direktfenster, um zu sehen, wie sie intern aussehen. --- **Weitere Infos zu Excel-Datumswerten:** [Microsoft: Arbeiten mit Datumsangaben und Uhrzeiten in Excel](https://support.microsoft.com/de-de/office/arbeiten-mit-datumsangaben-und-uhrzeiten-in-excel-9ffb6c2f-2c42-4b53-9573-2b8b0a77b3c0) --- Falls du einen bestimmten Wert als Beispiel hast, kannst du ihn im Direktfenster (`Debug.Print wsQuell.Range("B8").Value`) ausgeben und vergleichen, wie er in der Zieltabelle aussieht.

Kategorie: Excel Tags: VBA Datum Arbeitsplan
Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Wie formuliere ich in Excel eine Formel, um nur Werte zwischen zwei Datumswerten auszuwerten?

Um in Excel nur Werte zwischen zwei Datumswerten zu berücksichtigen, kannst du die Funktion `WENN` (bzw. `IF` im Englischen) in Kombination mit logischen Operatoren verwenden. Häufig wird au... [mehr]

Wie kann ich mit VBA die Zelle mit dem Namen 'Konto' auswählen?

Um in VBA eine Zelle mit dem Namen „Konto“ auszuwählen, kannst du den Namen direkt über das `Range`-Objekt ansprechen. Voraussetzung ist, dass der Name „Konto“ als be... [mehr]

Wie kann ich mit einem VBA-Makro eine Zellverknüpfung zu einem anderen, nicht geöffneten Arbeitsblatt aktualisieren?

Um eine Verknüpfung (z.B. eine Formel wie `='[AndereDatei.xlsx]Tabelle1'!A1`) in einer Zelle per VBA zu aktualisieren, ohne dass die verknüpfte Arbeitsmappe geöffnet ist, kann... [mehr]

Wie setze ich Variablen beim Starten einer Excel-Tabelle mit VBA?

Um Variablen wie `Set wsKriterien = ThisWorkbook.Worksheets("Kriterien")` beim Starten einer Excel-Datei automatisch zu setzen, kannst du das Workbook-Open-Ereignis im VBA-Editor nutzen. So... [mehr]

Welche Excelformel liefert das Jahr des nächsten 30.06.?

Um das Jahr des nächsten 30.06. (30. Juni) basierend auf dem aktuellen Datum zu ermitteln, kannst du folgende Excel-Formel verwenden: ```excel =JAHR(HEUTE()) + (HEUTE()>DATUM(JAHR(HEUTE());6;... [mehr]

Was bewirkt der VBA-Code ThisWorkbook.Names("z06_a1401111_Bericht").RefersToR1S1 = "='z06_a1401111_Bericht'!R1S1:R20S18"?

Der Ausdruck ```vba ThisWorkbook.Names("z06_a1401111_Bericht").RefersToR1S1 = "='z06_a1401111_Bericht'!R1S1:R20S18" ``` weist dem definierten Namen **z06_a1401111_Beric... [mehr]

Wie kann der VBA-Code angepasst werden, damit in 'Personen einzelnd drucken' der Name in Spalte C9-C66 gesucht und mit dem Wert im Arbeitsplan verglichen wird?

Um die Schleife so umzubauen, dass **in "Personen einzelnd drucken"** in den Zellen **C9:C66** nach dem Namen gesucht und mit der Spalte B im "Arbeitsplan" verglichen wird, muss di... [mehr]

Wie lege ich Drucktitel in Excel VBA fest?

Um in Excel VBA Drucktitel festzulegen, kannst du den folgenden Code verwenden. Dieser Code setzt die Drucktitel für die Zeilen und Spalten, die auf jeder gedruckten Seite wiederholt werden solle... [mehr]

Wie berechne ich in Excel ein bestimmtes Datum?

Um in Excel ein bestimmtes Datum zu berechnen, kannst du verschiedene Funktionen verwenden, je nach dem, was genau du erreichen möchtest. Hier sind einige gängige Methoden: 1. **Ein bestimm... [mehr]

Excel Formel zur Berechnung von Eingang Email zu Auslieferung

Um in Excel die Differenz zwischen einem Datum und einer Uhrzeit (z.B. "Eingang Email") und einem anderen Datum (z.B. "Auslieferung") zu berechnen, kannst du die folgende Formel ve... [mehr]