Wie kann die VBA-Formel angepasst werden, sodass alle Mitarbeiter in die Zieltabelle übertragen werden?

Antwort

Hier ist die überarbeitete Version des Makros, die **jeden Mitarbeiter** aus dem Bereich C9:C66 der Quell-Tabelle ("Personen einzelnd drucken") in die Ziel-Tabelle ("Arbeitsplan") überträgt – unabhängig davon, ob der Name bereits in der Ziel-Tabelle steht. Für jeden gefundenen Namen wird die entsprechende Zeile im "Arbeitsplan" gesucht und die Werte werden übertragen. Falls der Name nicht gefunden wird, wird er übersprungen. ```vba Sub uebertragAllePersonen() 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, j As Long Dim nameGefunden As Boolean 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 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 nameGefunden = False ' In Arbeitsplan Spalte A nach Datum suchen For Each rGef In wsZiel.Columns("A").Cells If IsDate(rGef.Value) Then If CLng(rGef.Value) = datumToFind Then ' Prüfen, ob Name in Spalte B übereinstimmt 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 nameGefunden = True Exit For End If End If End If If rGef.Row > 1000 Then Exit For ' Optional: Suchbereich begrenzen Next rGef ' Optional: Hinweis, wenn Name nicht gefunden wurde 'If Not nameGefunden Then ' wsQuell.Cells(i, zielStartCol).Value = "Name nicht gefunden" 'End If End If Next i MsgBox "Datenübertragung abgeschlossen.", vbInformation End Sub ``` **Hinweise:** - Das Makro sucht für **jeden** Namen aus C9:C66 das passende Datum und den Namen in der Ziel-Tabelle und überträgt die Werte. - Falls ein Name nicht gefunden wird, passiert nichts (optional kann ein Hinweis in die Quell-Tabelle geschrieben werden, siehe Kommentar). - Die Übertragung erfolgt immer in die Zeile des jeweiligen Mitarbeiters in der Quell-Tabelle. Falls du möchtest, dass auch neue Mitarbeiter in die Ziel-Tabelle eingefügt werden, müsste das Makro entsprechend erweitert werden.

Frage stellen und sofort Antwort erhalten

Verwandte Fragen

Was bedeutet der Befehl "QuellBlatt1.Rows(2).Copy" in VBA?

Der Befehl `QuellBlatt1.Rows(2).Copy` in VBA (Visual Basic for Applications) bedeutet, dass die **zweite Zeile** (Row 2) des Arbeitsblatts mit dem Namen oder Objektverweis `QuellBlatt1` **kopiert** wi... [mehr]

Wie lässt sich in Excel VBA der Typ eines Tabellenblatts (Chart oder Worksheet) ermitteln?

In Excel VBA kannst du den Typ eines Tabellenblatts (ob es sich um ein Arbeitsblatt oder ein Diagrammblatt handelt) mit der Type-Eigenschaft des jeweiligen Objekts ermitteln. Hier ein Beispiel: ```vb... [mehr]

Wie lautet der VBA-Code, um aus Excel eine E-Mail zu erstellen mit einem Empfänger im BCC?

Um in Excel mit VBA eine E-Mail zu erstellen, bei der der Empfänger im BCC steht, kannst du folgenden Code verwenden: ```vba Sub SendEmailWithBCC() Dim OutlookApp As Object Dim OutlookMa... [mehr]

Wie funktioniert oPPT.Presentations.Open(sFile) in VBA?

Die Methode `oPPT.Presentations.Open(sFile)` stammt aus der Automatisierung von Microsoft PowerPoint mit VBA (Visual Basic for Applications) oder anderen Programmiersprachen, die COM-Automatisierung u... [mehr]

Wie kann ich mit VBA den Wert einer benannten Zelle in eine Zelle eines anderen Arbeitsblatts kopieren?

Um mit VBA den Wert einer Zelle, der ein definierter Name zugewiesen wurde, in eine Zelle eines anderen Arbeitsblatts zu kopieren, kannst du folgenden Code verwenden: ```vba Sub WertKopieren() &#... [mehr]

Mit welcher Funktion kann ich in VBA einen im Arbeitsblatt ermittelten Wert anzeigen?

In VBA kannst du einen Wert, den dein Makro zuvor ermittelt hat, mit der Funktion `MsgBox` anzeigen. Beispiel: ```vba Dim ermittelterWert As Double ermittelterWert = Worksheets("Tabelle1").... [mehr]

Wie kann man in Access VBA die Bildschirmaktualisierung verhindern bzw. den Bildschirm einfrieren?

In Microsoft Access (VBA) gibt es keine direkte Methode wie `Application.ScreenUpdating = False` (wie in Excel), um den Bildschirm während der Ausführung von Code "einzufrieren". D... [mehr]

Wie öffne ich per VBA aus einer Access-Anwendung eine andere Access-Anwendung?

Um aus einer Access-Anwendung per VBA eine andere Access-Anwendung zu öffnen, kannst du das **CreateObject**-Kommando verwenden und die gewünschte Datenbank mit der **OpenCurrentDatabase**-M... [mehr]

xlwings mehrere Excel-Dateien aus einem Ordner zusammenfügen

Um mehrere Excel-Dateien aus einem Ordner mit xlwings zusammenzuführen, kannst du folgendes Python-S verwenden. Dieses Skript öffnet alle Excel-Dateien in einem angegebenen Ordner und fü... [mehr]

Wie können mehrere Spalten verschiedener Excel-Dateien mit xlwings zusammengefügt werden?

Um mehrere Spalten aus verschiedenen Excel-Dateien mit xlwings zusammenzuführen, kannst du die folgenden Schritte befolgen: 1. **Installation von xlwings**: Stelle sicher, dass xlwings installie... [mehr]