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?

Antwort

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 die Namensprüfung in eine Schleife über diese Zellen gelegt werden. Für jeden gefundenen Namen wird dann geprüft, ob er in der gefundenen Zeile im "Arbeitsplan" steht. Die Übertragung erfolgt dann in die jeweilige Zeile (also z.B. in Zeile 9, 10, ...). Hier die angepasste Version des relevanten Teils: ```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 Dim i 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 zielStartCol = 4 ' Spalte D ' Jetzt alle Namen in C9:C66 durchgehen For i = 9 To 66 nameQuell = wsQuell.Cells(i, 3).Value ' Spalte C If Not IsEmpty(nameQuell) Then If wsZiel.Cells(rGef.Row, "B").Value = nameQuell Then ' Kopiere Werte von Arbeitsplan F bis BA in die Zielspalten ab Spalte D der aktuellen Zeile For zielCol = 6 To 54 ' F(6) bis BA(54) wsQuell.Cells(i, zielStartCol + (zielCol - 6)).Value = wsZiel.Cells(rGef.Row, zielCol).Value Next zielCol End If End If Next i MsgBox "Datenübertragung abgeschlossen.", vbInformation End Sub ``` **Hinweis:** - Die Übertragung erfolgt für jede Zeile von C9 bis C66, sofern dort ein Name steht und dieser in der gefundenen Zeile im "Arbeitsplan" (Spalte B) steht. - Die Werte werden in die jeweilige Zeile (i) ab Spalte D geschrieben. - Die Meldung am Ende kommt nur einmal, wenn alle Zeilen durchlaufen wurden. Falls du möchtest, dass für jeden gefundenen Namen eine eigene Zeile im "Arbeitsplan" gesucht wird (also nicht nur für das eine Datum), müsste die Logik noch weiter angepasst werden.

Kategorie: Excel Tags: VBA Excel Vergleich
Frage stellen und sofort Antwort erhalten

Verwandte Fragen

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]

Excel: Wenn B1 < B2 - 100 und B1 > -0,0001, dann C3 = -1, sonst 1.

Um die gewünschte Bedingung in Excel umzusetzen, kannst du die folgende Formel in die Zelle C3 eingeben: ```excel =IF(B1 < B2 - 0.0001, -1, 1) ``` Diese Formel prüft, ob der Wert in B1... [mehr]

Excel-Blätter in einer großen Tabelle zusammenführen mit VBA

Um fünf Excel-Blätter in einer großen Tabelle zusammenzuführen, kannst du ein VBA-Makro verwenden. Hier ist ein einfaches Beispiel, wie du das machen kannst: 1. Öffne Excel... [mehr]

Excel-Blatt in VBA nach Inhalt in Zeile 4 aufteilen und alle Zeilen in neues Blatt einfügen.

Um ein Excel-Blatt in VBA nach dem Inhalt in Zeile 4 aufzuteilen und alle Zeilen in ein neues Blatt einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code erstellt ein neues Blatt un... [mehr]

Excel-Blatt in VBA nach Inhalt in Zeile 4 aufteilen und Spalten in neues Blatt einfügen.

Um ein Excel-Blatt in VBA nach dem Inhalt in Zeile 4 aufzuteilen und alle Spalten in ein neues Blatt einzufügen, kannst du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass die D... [mehr]

Excel VBA Code zum Kopieren von B17 bis B46 einer anderen Datei nach K19 bis BH9 der aktiven Datei.

Um die Zellen B17 bis B46 aus einer anderen Excel-Datei in die Zellen K19 bis BH9 der aktiven Excel-Datei zu kopieren, kannst du den folgenden VBA-Code verwenden: ```vba Sub CopyCells() Dim sourc... [mehr]

Wie lade ich mit VBA Informationen aus zwei Spalten in ein Listenfeld mit 'AddItem' in Excel?

Um in Excel mit VBA Informationen aus zwei Spalten in ein Listenfeld zu laden, kannst du die Methode `AddItem` verwenden. Hier ist ein einfaches Beispiel, wie du dies umsetzen kannst: 1. Öffne d... [mehr]

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?

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 unte... [mehr]

Wie formatiere ich in Excel ein Feld mit dem Pfeil, um auf eine Datensammlung zuzugreifen?

Um in Excel ein Feld mit einem Pfeil zu formatieren, sodass auf eine Datensammlung zugegriffen werden kann, kannst du die Funktion "Datenüberprüfung" verwenden, um eine Dropdown-Li... [mehr]

Warum erhalte ich bei Excel so eine Steigung?

Die Darstellung von -4,89488E-06 in Excel bedeutet, dass du einen sehr kleinen negativen Wert hast, der in wissenschaftlicher Notation angezeigt wird. Diese Notation zeigt an, dass der Wert -4,89488 m... [mehr]