Warum erkennt meine Excel-VBA-Suche im Arbeitsplan das Datum nicht, obwohl das Datum aus einer anderen Tabelle kopiert und in beiden Tabellen als Datum dargestellt wird? Wie muss die VBA angepasst werden?

Antwort

Das Problem liegt meist daran, dass Excel-Datumswerte intern als Zahlen gespeichert werden, aber durch Formeln, Zellformatierungen oder Kopiervorgänge Unterschiede entstehen können. Besonders, wenn das Datum im „Arbeitsplan“ per Formel erzeugt wird, kann es zu Typ-Unterschieden kommen (z.B. Zahl vs. Text). **Lösung:** Vergleiche die Datumswerte immer als Zahl (Double), nicht als Text. Das erreichst du, indem du `CLng` oder `CDbl` verwendest. Außerdem solltest du beim Suchen (`Find`) explizit nach dem numerischen Wert suchen. Hier die überarbeitete Version deiner Sub, die das Datum als Zahl behandelt: ```vba Sub übertragallepersonen() Dim wb As Workbook Dim wsQuell As Worksheet, wsZiel As Worksheet Dim datumToFind As Variant, rGef As Range Dim nameQuell As Variant Dim zielStartCol As Long, zielCol As Long, quelleCol As Long Set wb = ThisWorkbook Set wsQuell = wb.Sheets("Personen einzelnd drucken") Set wsZiel = wb.Sheets("Arbeitsplan") ' Datum aus Spalte B8 der Quell-Tabelle als Zahl If IsDate(wsQuell.Range("B8").Value) Then datumToFind = CLng(wsQuell.Range("B8").Value) Else MsgBox "Datum in Personen einzeln drucken!B8 ist ungültig oder leer.", vbExclamation Exit Sub End If ' In Arbeitsplan Spalte A suchen (ebenfalls als Zahl) Set rGef = Nothing For Each cell In wsZiel.Columns("A").Cells If IsDate(cell.Value) Then If CLng(cell.Value) = datumToFind Then Set rGef = cell Exit For End If End If If cell.Row > 1000 Then Exit For ' Optional: Suchbereich begrenzen Next cell If rGef Is Nothing Then MsgBox "Datum nicht in Arbeitsplan Spalte A gefunden.", vbInformation Exit Sub End If ' Namen vergleichen nameQuell = wsQuell.Range("C8").Value If IsEmpty(nameQuell) Then MsgBox "Name in Personen einzeln drucken!C8 ist leer.", vbExclamation Exit Sub End If If wsZiel.Cells(rGef.Row, "B").Value = nameQuell Then ' Kopiere Werte von Arbeitsplan F bis BA in die Zielspalten ab Spalte D zielStartCol = 4 ' Spalte D For zielCol = 6 To 54 ' F(6) bis BA(54) wsQuell.Cells(9, zielStartCol + (zielCol - 6)).Value = wsZiel.Cells(rGef.Row, zielCol).Value Next zielCol MsgBox "Daten wurden übertragen.", vbInformation Else MsgBox "Kein Namensabgleich gefunden in der gleichen Datum-Zeile.", vbInformation End If End Sub ``` **Wichtige Hinweise:** - Die Datumssuche läuft jetzt über eine Schleife, damit du den Wert als Zahl vergleichen kannst (das ist robuster als `.Find` bei Formeldaten). - Wenn du sehr viele Zeilen hast, kannst du die Schleife anpassen oder optimieren. - Achte darauf, dass die Zellen wirklich als Datum formatiert sind. **Weitere Tipps:** - Wenn du weiterhin `.Find` nutzen willst, dann stelle sicher, dass du mit `CDbl` oder `CLng` suchst und `LookIn:=xlValues` verwendest. - Prüfe, ob in den Zellen wirklich ein Datum steht (ggf. mit `IsDate`). **Mehr zu Datumswerten in Excel:** [Microsoft: Arbeiten mit Datumsangaben in VBA](https://learn.microsoft.com/de-de/office/vba/language/reference/user-interface-help/date-data-type) Falls du noch weitere Probleme mit Datumsformaten hast, kann es helfen, die Zellen explizit als Datum zu formatieren.

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

Verwandte Fragen

Wie importiere ich Datumsfelder aus einer Excel-Tabelle in MS Word?

Um Datumsfelder aus einer Excel-Tabelle in ein Word-Dokument einzufügen, kannst du die folgenden Schritte befolgen: 1. **Excel-Daten vorbereiten**: Stelle sicher, dass die Datumswerte in deiner... [mehr]

Excel VBA: Grüne markierte Reiter als PDF drucken, jedes Arbeitsblatt auf eine Seite darstellen.

Um in Excel VBA alle Arbeitsblätter, die grün markiert sind, in eine PDF-Datei zu drucken und jedes Arbeitsblatt auf eine Seite darzustellen, kannst du den folgenden VBA-Code verwenden: ```... [mehr]

Formel in Excel-Fußzeile einfügen?

Um eine Formel in die Fußzeile eines Excel-Dokuments einzufügen, kannst du die folgenden Schritte befolgen: 1. **Öffne dein Excel-Dokument.** 2. **Gehe zum Reiter "Einfügen&... [mehr]

Wie funktioniert der SVERWEIS? Beispiel?

Der SVERWE (senkrechter Ver) eine Funktion in Microsoft, die verwendet wird um Daten aus einer zu suchen und abzur. Hier ist eines Beispiel, um zeigen, wie derVERWEIS funktioniertAngenommen, du die fo... [mehr]