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 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]

Excel Formel, die den nächsten Wert über 0 nach einem bestimmten Datum ausgibt.

Um den nächsten Wert über 0 nach einem bestimmten Datum in Excel zu finden, kannst du die folgende Formel verwenden. Angenommen, deine Daten befinden sich in den Spalten A (Datum) und B (Wer... [mehr]

Excel VBA Zelle zeigt Formel als Text, wie ändern?

Wenn eine Zelle in Excel eine Formel als Text anzeigt, kann das verschiedene Ursachen haben. Hier sind einige Schritte, um das Problem zu beheben: 1. **Überprüfen der Formatierung**: Stelle... [mehr]

Excel VBA: Farbige Reiter drucken und PDF erstellen.

Um in Excel VBA die farbig markierten Reiter (Arbeitsblätter) auszuwählen, die Druckeinstellungen so zu ändern, dass sie auf eine Seite passen, und anschließend eine PDF-Datei zu... [mehr]

Excel VBA: Reiter, die farbig markiert sind, Druckeinstellung auf eine Seite darstellen und eine PDF erstellen?

Um in Excel VBA die farbig markierten Reiter (Arbeitsblätter) auszuwählen, die Druckeinstellungen so zu ändern, dass sie auf eine Seite passen, und anschließend eine PDF zu erstel... [mehr]

Wie kann ich in Excel VBA die farbig markierten Reiter drucken und die Druckeinstellung so festlegen, dass das Blatt auf einer Seite dargestellt wird?

Um in Excel VBA die farbig markierten Blätter zu drucken und dabei die Druckeinstellungen so zu setzen, dass jedes Blatt auf einer Seite dargestellt wird, kannst du den folgenden Code verwenden.... [mehr]

Excel VBA: Grün markierte Reiter sollen in eine PDF-Datei gedruckt werden, jedes Arbeitsblatt auf eine Seite darstellen und die erste Seite mit einer Kopfzeile beschriften.

Um in Excel VBA alle grün markierten Arbeitsblätter als PDF zu drucken und dabei sicherzustellen, dass jedes Arbeitsblatt auf einer Seite dargestellt wird und die erste Seite eine Kopfzeile... [mehr]