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 kann man in Excel ein Datum in Text umwandeln?

Um in Excel ein Datum in Text umzuwandeln, gibt es verschiedene Möglichkeiten. Die gängigsten Methoden sind: **1. TEXT-Funktion verwenden:** Mit der Funktion `TEXT` kannst du das Datum in... [mehr]

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]

Wie schreibe ich ein Makro, das Zeilen aus verschiedenen Excel-Arbeitsblättern kopiert und in ein anderes Blatt einfügt?

Um ein Makro in Excel zu schreiben, das Zeilen aus unterschiedlichen Arbeitsblättern kopiert und in ein anderes Arbeitsblatt einfügt, kannst du den VBA-Editor verwenden. Hier ist ein einfach... [mehr]

Wie kopiere ich per Makro ein einzelnes Arbeitsblatt in Excel?

Um in Excel per Makro (VBA) eine Kopie eines einzelnen Arbeitsblatts zu erstellen, kannst du folgenden VBA-Code verwenden: ```vba Sub BlattKopieren() ' Name des zu kopierenden Blatts Dim... [mehr]

Wie kann ich im Excel-Datenschnitt Monate in zwei Spalten nebeneinander statt untereinander anzeigen?

Um in Excel einen Datenschnitt (Slicer) für Monate so darzustellen, dass die Monate in zwei Spalten nebeneinander statt alle untereinander angezeigt werden, gehe wie folgt vor: 1. **Datenschnitt... [mehr]

Wie aktiviere ich die durchgestrichene Schriftart in Excel per Shortcut?

In Excel kannst du den Shortcut **Strg + 5** verwenden, um den durchgestrichenen Schriftstil (Durchstreichen) für die ausgewählten Zellen zu aktivieren oder zu deaktivieren. So funktionier... [mehr]

Wie füge ich einen Hyperlink in eine Excel-Tabelle ein?

Um einen Hyperlink in eine Excel-Tabelle einzufügen, gehe wie folgt vor: 1. **Zelle auswählen:** Klicke auf die Zelle, in der der Hyperlink erscheinen soll. 2. **Hyperlink einfügen:**... [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]