AW: VORPLANUNG Sortierte Übernahme Personendaten von Tab1->Tab2
07.12.2023 20:26:32
daenzn
Hey Piet:
Das ist der Code. Ich habe das Array abändern wollen.
Sub Mitarbeiter_zuweisen_WochenTag()
Dim AC As Range, Sht As String, arrWTag
Dim TbX As Worksheet, i As Integer
'Tabellen für alle Tage: Montag bis Sonntag
arrWTag = Array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag")
Sht = arrWTag(TagSpa - 3) 'Target Spalte-3
Set TbX = Worksheets(Sht) 'Zielsheet Mo-So.
Ab hier wird der Fehler angezeigt: Laufzeitfehler "9" ab dem Bereich "Sh = arr... Das Apostroph bei Target ist auch vorhanden.
Die Einsatzpläne stehen jetzt von "Montag"-"Sonntag". Also gibt es für jeden Tag eine Tabelle mit der Bezeichnung des entsprechenden Tages. Ich wollte das auch in den anderen Codes beachten. Nur ist mir nicht ganz klar, von wo bis wo ich den Code kopieren muss.
Ich weiß, dass ich aus der ehemaligen Bezeichnung Tabelle2, Tabelle3 etc. jetzt "Montag", "Dienstag", .... in den Codes machen muss. Nur leider funktioniert das ganze nicht so wie ich es mir denke.
Beispielweise bei Modul "Mitarbeiter_Zuweisen" weiß ich nun nicht, von wo bis wo ich den Code kopieren muss. Sobald ich mich an den "Dienstag" mache und entsprechend eintrage und den Code kopiere erscheint ein Fehler.
Für die restlichen Tage funktioniert das Zuweisen der Mitarbeiter auch nicht, außer für Montag. Alle andere Tage lassen sich nicht mittels des Buttons mit den ausgewählten Mitarbeitern füllen.
Ich würde dir gerne entsprechendes Bildmaterial hochladen, sodass du weisst was ich meine.. nur funktioniert das nicht so ganz auf der Arbeit.
Ein Beispiel, wie ich das meine mit dem Code kopieren und fortführen:
Option Explicit '5.12.2023 Piet für Herber Forum
Sub Mitarbeiter_zuweisen()
Dim AC As Range, i As Integer
Dim Tb2 As Worksheet, n As Long
Set Tb2 = Worksheets("Montag")
With Worksheets("Tabelle1")
'Zugführung auswerten
For Each AC In .Range("ZFBereich")
If InStr(AC.Offset(0, 1), "EINSATZ I ZF") Then
Tb2.Range("B12").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. ZF") Then
Tb2.Range("B13").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Fahrer ZF") Then
Tb2.Range("B14").Value = AC.Value
End If
Next AC
i = 1 '1. Gruppe auswerten
For Each AC In .Range("Gruppe1")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("B21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("B22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("B23").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '2. Gruppe auswerten
For Each AC In .Range("Gruppe2")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("G21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("G22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("G23").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '3. Gruppe auswerten
For Each AC In .Range("Gruppe3")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("B35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("B36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("B37").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '4. Gruppe auswerten
For Each AC In .Range("Gruppe4")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("G35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("G36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("G37").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
Ab hier beginnt meine Bearbeitung
Set Tb2 = Worksheets("Dienstag")
With Worksheets("Tabelle1")
'Zugführung auswerten
For Each AC In .Range("ZFBereich")
If InStr(AC.Offset(0, 1), "EINSATZ I ZF") Then
Tb2.Range("B12").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. ZF") Then
Tb2.Range("B13").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Fahrer ZF") Then
Tb2.Range("B14").Value = AC.Value
End If
Next AC
i = 1 '1. Gruppe auswerten
For Each AC In .Range("Gruppe1")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("B21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("B22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("B23").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '2. Gruppe auswerten
For Each AC In .Range("Gruppe2")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("G21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("G22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("G23").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '3. Gruppe auswerten
For Each AC In .Range("Gruppe3")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("B35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("B36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("B37").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
i = 1 '4. Gruppe auswerten
For Each AC In .Range("Gruppe4")
If InStr(AC.Offset(0, 1), "EINSATZ I GF") Then
Tb2.Range("G35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
Tb2.Range("G36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
Tb2.Range("G37").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
End With
End Sub
Leider...klappt das dann fortfolgend überhaupt nicht.