Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen

Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 18:22:42
Daenzn
Hallo Hallo!

Im letzten Beitrag, der nun leider im Archiv gelandet ist, konnte mir einer von euch (Piet), mega gut helfen. Aktuell gibt es nun leider das ein oder andere "Problemchen" bei den Codes. Ich habe gewisse Änderungen vorgenommen an den Tabellen (hinsichtlich Beizeichnungen, Datenüberprüfungen, erweiterung der Tabellen von 4 auf 7 Tage).

Zunächst einmal die Codes/Makros:
Tabelle1:

Option Explicit

Dim rw As Integer, Zeile As Integer
Dim i As Integer, sp As Integer, Txt


Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Address, ":") Then Exit Sub
If Target.Value = Empty Then Exit Sub
If Target.Column 3 Then Exit Sub
If Target.Column > 9 Then Exit Sub
rw = Target.Row 'Target Zeile
Txt = Target.Value

If rw = 3 And Txt > "#" And _
Left(Txt, 1) = Right(Txt, 1) Then
Target.Value = Empty
TagSpa = Target.Column
Call Mitarbeiter_zuweisen_WochenTag
Exit Sub
End If

If rw = 3 Or rw = 9 Or rw = 19 Or rw = 29 Or rw = 39 Then
On Error GoTo Fehler
Target.Value = Empty
If Txt > "#" Then Exit Sub
sp = Target.Column: Zeile = 4
If rw > 3 Then Zeile = 8

Application.EnableEvents = False
'neue Spalte aus vorheriger füllen
For i = 1 To Zeile
If Cells(rw + i, sp - 1) > "" Then
Cells(rw + i, sp) = Cells(rw + i, sp - 1)
End If
Next i
Application.EnableEvents = True
End If
Exit Sub

Fehler: Application.EnableEvents = True
MsgBox "Unerwarteter Target Fehler"
End Sub




In diesem Fall gibt es ein paar Probleme mit dem "Kurzbefehl": Eintragen/ oder eher gesat, dass die ausgewählten Namen in den entsprechenden Tabellen landen.
Das übertragen der Namen mittels # funktioniert problemlos.

Modul1 Mitarbeiter_Zuweisen:

Hier kann ich keinen fehler etecken.

Modul2 Adressentest:

Sub Adressentest()

Dim Txt As String
On Error GoTo Fehler
Worksheets("Tabelle1").Select
Range("ZFBereich").Select
Txt = "Zugführung": GoSub AdrShow
Range("Gruppe1").Select
Txt = "Gruppe 1": GoSub AdrShow
Range("Gruppe2").Select
Txt = "Gruppe 2": GoSub AdrShow
Range("Gruppe3").Select
Txt = "Gruppe 3": GoSub AdrShow
Range("Gruppe4").Select
Txt = "Gruppe 4": GoSub AdrShow
Application.CutCopyMode = False
[b1].Select
Exit Sub

AdrShow: Selection.Copy
MsgBox Selection.Address(0, 0) & vbLf & Txt: Return
Fehler: MsgBox Txt & " Fehler bei dieser Adresse, bitte prüfen"
Application.CutCopyMode = False
End Sub


Code funktioniert problemlos.

Modul3 Mitarbeiter_Zuweisen_WochenTag

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.

'alte Tabellenbereiche löschen
TbX.Range("B12:B14").ClearContents
TbX.Range("B21:B28").ClearContents
TbX.Range("G21:G28").ClearContents
TbX.Range("B35:B42").ClearContents
TbX.Range("G35:G42").ClearContents

With Worksheets("Tabelle1")
'Zugführung auswerten
For Each AC In .Range("ZFBereich")
If InStr(AC.Offset(0, 1), "EINSATZ ZF") Then
TbX.Range("B12").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. ZF") Then
TbX.Range("B13").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Fahrer ZF") Then
TbX.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 GF") Then
TbX.Range("B21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
TbX.Range("B22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
TbX.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 GF") Then
TbX.Range("G21").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
TbX.Range("G22").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
TbX.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 GF") Then
TbX.Range("B35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
TbX.Range("B36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
TbX.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 GF") Then
TbX.Range("G35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
TbX.Range("G36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
TbX.Range("G37").Cells(i, 1) = AC.Value
i = i + 1
End If
Next AC
End With
'Wochentag Sheet Select
Worksheets(Sht).Select
End Sub




Code funktionierte anfänglich. Bis ich die Daten aus der Datenüberprüfung verändert habe. Zudem habe ich das Array vervollständigt, welches nur bis Mi, Do. ging.
Aktuell wird ein Laufzeitfehler bei:

 '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.
angezeigt.


Ich habe die Excel Datei mitverlinkt. Ich hoffe ihr könnt mir weiterhelfen.
Speziell hoffe ich: Hey Piet, falls du die möglichkeit besitzt, würde ich ich freuen wenn du ir weiterhelen

Grüße:
Daenzn!!



https://www.herber.de/bbs/user/165001.xlsm

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 21:18:09
Matthias
Moin!
Bin grad ohne Excel unterwegs. Deshalb mal nur, was mir so aufgefallen ist.
Die Variable TagSpa wird nur im Change Event genutzt, ist aber nicht für das ganze Modul freigegeben. Bei Mitarbeiter_zuweisen greifst du dann aber auf eine Variable mit dem Namen zu. Der hat dann aber keinen Wert zugewiesen. Demzufolge versuchst du auf die Positin minus 3 im Array zuzugreifen. Das geht nicht.
Entweder die Variable ganz am Anfang nach Option explicit mit deklarieren oder beim Aufruf von Mitarbeiter_zuweisen mit übergeben. Dann hast du auch den aktuellen Wert.
VG
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 21:59:19
GerdL
Hallo Daenzn!

Option Explicit

Dim rw As Integer, Zeile As Integer
Dim i As Integer, sp As Integer, Txt


Private Sub Worksheet_Change(ByVal Target As Range)
If InStr(Target.Address, ":") Then Exit Sub
If Target.Value = Empty Then Exit Sub '--a) Ausstieg
If Target.Column 3 Then Exit Sub
If Target.Column > 9 Then Exit Sub
rw = Target.Row 'Target Zeile
Txt = Target.Value

If rw = 3 And Txt > "#" And _
Left(Txt, 1) = Right(Txt, 1) Then
Target.Value = Empty '--> geht zu a)
TagSpa = Target.Column
Call Mitarbeiter_zuweisen_WochenTag
Exit Sub
End If

If rw = 3 Or rw = 9 Or rw = 19 Or rw = 29 Or rw = 39 Then
On Error GoTo Fehler
Target.Value = Empty
If Txt > "#" Then Exit Sub
sp = Target.Column: Zeile = 4
If rw > 3 Then Zeile = 8

Application.EnableEvents = False
'neue Spalte aus vorheriger füllen
For i = 1 To Zeile
If Cells(rw + i, sp - 1) > "" Then
Cells(rw + i, sp) = Cells(rw + i, sp - 1)
End If
Next i
Application.EnableEvents = True
End If
Exit Sub

Fehler: Application.EnableEvents = True
MsgBox "Unerwarteter Target Fehler"
End Sub


Schreibe mal über Target.Value =Empty
Application.EnableEvents = False

Sonst wird
Call Mitarbeiter_zuweisen_WochenTag
nicht aufgerufen.

Gruß Gerd
Anzeige
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 22:07:35
Piet
Hallo

freut mich von dir zu hören, ich hatte aber bereits einen Thread für dich eröffnet.
Schau bitte mal hier, da findest du meine Lösung, und die ist extrem kurz!
VORPLANUNG Sortierte Übernahme Personendaten von Piet - Piet 10.12.2023 14:23:53

Würde mich freuen wenn es damit klappt. In diesem Sinne ....

mfg Piet

AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 22:16:32
Piet
Hallo Gerd

ich sehe gerade du hast den Tipp gegeben über Target.Value = Empty die EnableEvents auf False zu setzen.
Ich habe das noch nicht ausprobiert, aber das Makro Mitarbeiter_ausfüllen wird bei ja mit Exit Sub beendet!
Und wer, was bitte, schaltet die EnableEvents dann wieder auf True???

mfg Piet
Anzeige
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
14.12.2023 19:04:56
Piet
Hallo

ich lade dir mal meine Beispiel Datei hoch., teste bitte mal alle Funktionen in dieser Datei.
Ich denke bei mir werden die Daten richtig übernommen. Falls nicht bitte Bescheid geben.
Du kannst dann noch mal alle Codes meines Beispiels mit deinem Code vergleichen.
https://www.herber.de/bbs/user/165204.xls

mfg Piet
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
14.12.2023 19:29:18
Daenzn
Es funktioniert alles Einwandfrei!

Zuletzt musste ich nur im Modul3 die Bereiche:
Bsp.:
If InStr(AC.Offset(0, 1), "EINSATZ GF") Then

TbX.Range("B35").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
TbX.Range("B36").Value = AC.Value
ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
TbX.Range("B37").Cells(i, 1) = AC.Value


meiner DropDown Auswahl anpassen. Seither läuft die Excel-Datei mit deinen Codes 100% Fehlerfrei.

Piet ich danke dir für deine Mühen und Geduld! Hast mir große Hilfe geleistet.
1000-Dank und vielleicht bis bald!

Anzeige
AW: Reupload: Freut mich das jetzt alles geklappt hat oWt
14.12.2023 20:11:53
Piet
...
AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
11.12.2023 22:21:57
Piet
Hallo Daenzn

wenn ich deinen letzten Thread richtig verstanden habe schaltest du das Makro per Button ein. Stimmt das??
Wenn ja, dann kannst du diesen Teil im Target Makro ohnehin löschen. Der wird beim Button nicht benötigt!

mfg Piet

  • If rw = 3 And Txt > "#" And _
    Left(Txt, 1) = Right(Txt, 1) Then
    Target.Value = Empty
    TagSpa = Target.Column
    Call Mitarbeiter_zuweisen_WochenTag
    Exit Sub
    End If
  • AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    11.12.2023 22:40:51
    GerdL
    Ja stimmt, Piet.

    Direkt unter Call Mitarbeiter_zuweisen_WochenTag
    muss er bei diesem Spaghetticode dann wieder
    Application.Enableevents = True
    setzen (oder vorm Ende des Makros Mitarbeiter_zuweisen_WochenTag).

    Gruß Gerd
    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    12.12.2023 00:47:19
    Daenzn
    Hallo Gerd
    Hallo Piet,

    Vielen Dank für eure Beträge!

    @Piet
    Soweit habe ich leider nicht gedacht, nachzuschauen ob du nicht einen neuen Beitrag für mich eröffnet hast!
    Ich danke dir dafür.

    Auf deine Frage:
    Gedanklich habe ich mich damit bereits abgefunden, anstelle der Buttons mit deinen Kurzbefehlen in Spalte 3 Tabelle1 zu arbeiten. Das erleichtert doch die Arbeit mehr als mit den Buttons. Die Lösung gefällt mir doch ganz gut, deshalb wäre es praktischer, wenn das letztlich dann doch so funktioniert!
    Das hätte ich doch nochmal konkret erwähnen sollen.

    @Gerd und @Piet
    Ohne auf eure Debatte jetzt mit fehlendem Fachwissen eingehen zu können, muss ich dennoch die Frage stellen:
    Wo und was muss ich denn jetzt ändern?

    Danke für eure Mühen. Ich bin gespannt auf die Lösung.

    Grüße,
    Dennis
    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    12.12.2023 06:41:54
    Daenzn
    Hallo Gerd,

    ich habe deine Anweisungen mal befolgt:

    Ich hoffe ich habe richtig rauslesen können, wie du es gemeint hast.
    Anbei meine Veränderungen in den Codes aus Tabelle1.

    Option Explicit
    
    Dim rw As Integer, Zeile As Integer
    Dim i As Integer, sp As Integer, Txt


    Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr(Target.Address, ":") Then Exit Sub
    If Target.Value = Empty Then Exit Sub
    If Target.Column 3 Then Exit Sub
    If Target.Column > 9 Then Exit Sub
    rw = Target.Row 'Target Zeile
    Txt = Target.Value

    If rw = 3 And Txt > "#" And _
    Left(Txt, 1) = Right(Txt, 1) Then
    Application.EnableEvents = False
    Target.Value = Empty
    TagSpa = Target.Column
    Call Mitarbeiter_zuweisen_WochenTag
    Application.EnableEvents = True
    Exit Sub
    End If

    If rw = 3 Or rw = 9 Or rw = 19 Or rw = 29 Or rw = 39 Then
    On Error GoTo Fehler
    Application.EnableEvents = False
    Target.Value = Empty
    If Txt > "#" Then Exit Sub
    sp = Target.Column: Zeile = 4
    If rw > 3 Then Zeile = 8

    Application.EnableEvents = False
    'neue Spalte aus vorheriger füllen
    For i = 1 To Zeile
    If Cells(rw + i, sp - 1) > "" Then
    Cells(rw + i, sp) = Cells(rw + i, sp - 1)
    End If
    Next i
    Application.EnableEvents = True
    End If
    Exit Sub

    Fehler: Application.EnableEvents = True
    MsgBox "Unerwarteter Target Fehler"
    End Sub




    Leider werden die Mitarbeiterdaten dennoch nicht aus der Tabelle1 in die entsprechenden Wochentage eingetrage, wenn man den Kurzbefehl -> "aa" in Zeile3 eingibt oder in die nächste Spalte übernommen wenn man den Kurzbefehl "#" eingibt.

    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    12.12.2023 18:12:28
    Piet
    Hallo

    Sorry, das ich mich so spät melde, hatte heute viel privat zu tun. Jetzt aber, bei mir läuft der Code einwandfrei.
    Ich habe aber einiges geändert, kopiere die geänderte Version in deine Datei. Damit sollte es auch bei dir klappen.
    Kleine Neuerung: - gibst du in Zeile 3 statt "aa" das Wort "Alle" ein, werden alle Tages Tabellen ausgefüllt!
    Bei Mitarbeiter musst du nur die Set -Anweisung ändern, alles andere bleibt wie vorher.

    mfg Piet

    Option Explicit    'Targret Code in Tabelle1
    
    Dim rw As Integer, Zeile As Integer
    Dim i As Integer, sp As Integer, Txt


    Private Sub Worksheet_Change(ByVal Target As Range)
    If InStr(Target.Address, ":") Then Exit Sub
    If Target.Value = Empty Then Exit Sub
    If Target.Column 3 Then Exit Sub
    If Target.Column > 9 Then Exit Sub
    rw = Target.Row 'Target Zeile
    Txt = Target.Value 'Wert

    If rw = 3 And Target.Value > "#" Then
    If Left(Txt, 1) = Right(Txt, 1) Then
    TagSht = Cells(1, Target.Column)
    Call Mitarbeiter_zuweisen_WochenTag
    'Wochentag Sheet Select
    Worksheets(TagSht).Select
    ElseIf Txt = "Alle" Then
    sp = Target.Column
    For i = 3 To 9
    TagSht = Worksheets("Tabelle1").Cells(1, i)
    Call Mitarbeiter_zuweisen_WochenTag
    Next i
    'Wochentag Sheet Select
    TagSht = Cells(1, sp)
    Worksheets(TagSht).Select
    End If
    Target.Value = Empty
    Exit Sub
    End If

    If rw = 3 Or rw = 9 Or rw = 19 Or rw = 29 Or rw = 39 Then
    On Error GoTo Fehler
    Target.Value = Empty
    If Txt > "#" Then Exit Sub
    sp = Target.Column: Zeile = 4
    If rw > 3 Then Zeile = 8

    Application.EnableEvents = False
    'neue Spalte aus vorheriger füllen
    For i = 1 To Zeile
    If Cells(rw + i, sp - 1) > "" Then
    Cells(rw + i, sp) = Cells(rw + i, sp - 1)
    End If
    Next i
    Application.EnableEvents = True
    End If
    Exit Sub

    Fehler: Application.EnableEvents = True
    MsgBox "Unerwarteter Target Fehler"
    End Sub


    Bei Mitarbeitert musst du nur die Set -Anweisung ändern, alles andere bleibt wie vorher.

    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
    Set TbX = Worksheets(TagSht) 'Zielsheet Mo-So.

    'alte Tabellenbereiche löschen
    TbX.Range("B12:B14").ClearContents
    TbX.Range("B21:B28").ClearContents
    TbX.Range("G21:G28").ClearContents
    TbX.Range("B35:B42").ClearContents
    TbX.Range("G35:G42").ClearContents

    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 08:37:04
    Daenzn
    Hey Piet,

    kein ding freut mich von dir zu hören.

    Mit der zweiten Änderung gibt es bei mir jedoch ein Problem.
    Da steht bei mir:

    Fehler beim Kompilieren
    Variable nicht definiert.

    Betrifft im Bereich:
    Set TbX = Worksheets(TagSht)    'Zielsheet Mo-So.

    die Variable (TagSht)


    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 08:49:03
    Daenzn
    Zudem popt jetzt auch immer wieder folgender Fehler auf:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    If InStr(Target.Address, ":") Then Exit Sub
    If Target.Value = Empty Then Exit Sub
    If Target.Column 3 Then Exit Sub
    If Target.Column > 9 Then Exit Sub
    rw = Target.Row 'Target Zeile
    Txt = Target.Value 'Wert

    If rw = 3 And Target.Value > "#" Then
    If Left(Txt, 1) = Right(Txt, 1) Then
    TagSht = Cells(1, Target.Column)
    Call Mitarbeiter_zuweisen_WochenTag


    Ebenfalls markiert ist hier das TagSht

    Ich begreifs nicht warum das bei dir funktioniert und bei mir nicht..

    Ich habe weiter oben folgendes euch mitgeteilt und weiss nicht ob es evtl. daran liegt:

    In der Tabelle funktionen habe ich EINSATZ I, EINSATZ II, EINSATZ III etc. gelöscht.
    vorhanden sind nur noch folgende Daten für das DropDown in der Tabelle1 für die Auswahl von Mo-So um es vereinfacht dazustellen und nicht die Problematik zu haben, dass das DropDown zu lang werden könnte:
  • EINSATZ ZF
    EINSATZ Stellv. ZF
    EINSATZ Fahrer ZF

    EINSATZ GF
    EINSATZ Stellv. GF
    EINSATZ


  • Kann es sein, dass es da zu einem Problem kommt?

    Ich lade dir mal meine Excel Datei nochmal hoch. Vll kannst du dir da mal ein Bild von machen.

    Irgendwie fühle ich mich schon fast schlecht, dass du mitlerweile ne halbe Ewigkeit dich mit meiner Excel Tabelle beschäftigst. Hab fast den Eindruck, dass ich irgendwo als nen fehler mache.


    https://www.herber.de/bbs/user/165152.xlsm

    Hier meine Excel Tabelle auf aktuellem Stand
    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 08:56:16
    Daenzn
    PS:
    Dadurch, dass ich natürlich die Auswahlliste für das DropDown geändert habe, bin ich schonmal hergegangen und habe auch in Modul3 den Code geändert, wie man aus einer meiner Älteren Antworten lesen kann.
    Beispielweise:

    i = 1    '1. Gruppe auswerten
    
    For Each AC In .Range("Gruppe1")
    If InStr(AC.Offset(0, 1), "EINSATZ GF") Then
    TbX.Range("B21").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
    TbX.Range("B22").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "EINSATZ") Then
    TbX.Range("B23").Cells(i, 1) = AC.Value
    i = i + 1
    End If
    Next AC

    Anzeige
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 12:56:22
    Piet
    Hallo

    Sorry, mein Fehler, ich vergaß dir mitzuteilen was TagSht ist. Diese Variable ist als Public deklariert.
    In der alten Version war es Public TagSpa als Zahl, jetzt neu definiert als Public TagSht als String!
    Du findest sie im Modul für : Sub Mitarbeiter_zuweisen_WochenTag() nach Option Explicit .
    Da bitte die Variable ändern, dann sollte es laufen. Public heisst, Öffentlich, weil sie den Wochentag übernimmt!

    Ich habe mir nicht alls durchgelesen was du geschrieben hast, warte erst mal ab ob dein Code damit läuft.
    Wenn dann noch Fragen offen sind schaue ich sie mir an.

    mfg Piet
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 19:27:52
    Daenzn
    Hey Piet,

    ich finde den Bereich nach Option Explicit leider nicht. Du musst wissen, dass ich davon absolut null Ahnung hab :D

    Kannst du mir den Bereich als Code bitte schicken?



    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 22:29:50
    Piet
    Hallo

    es ist der Code im Modul3, darin findest du das Makro - Sub Mitarbeiter_zuweisen_WochenTag()
    Der Text Option Explicit steht in jedem Modul ganz oben, immer an erster Stelle. Leicht zu finden.
    Ich schicke dir den kompletten Code, es geht aber nur um die ersten Zeilen. Tausche ihn einfach.

    mfg Piet

    Option Explicit          '5.12.2023  Piet  für Herber Forum
    
    Public TagSht As String 'Tages Tabelle


    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
    Set TbX = Worksheets(TagSht) 'Zielsheet Mo-So.

    'alte Tabellenbereiche löschen
    TbX.Range("B12:B14").ClearContents
    TbX.Range("B21:B28").ClearContents
    TbX.Range("G21:G28").ClearContents
    TbX.Range("B35:B42").ClearContents
    TbX.Range("G35:G42").ClearContents

    With Worksheets("Tabelle1")
    'Zugführung auswerten
    For Each AC In .Range("ZFBereich")
    If InStr(AC.Offset(0, 1), "EINSATZ I ZF") Then
    TbX.Range("B12").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. ZF") Then
    TbX.Range("B13").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Fahrer ZF") Then
    TbX.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
    TbX.Range("B21").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
    TbX.Range("B22").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
    TbX.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
    TbX.Range("G21").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
    TbX.Range("G22").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
    TbX.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
    TbX.Range("B35").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
    TbX.Range("B36").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
    TbX.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
    TbX.Range("G35").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "Stellv. GF") Then
    TbX.Range("G36").Value = AC.Value
    ElseIf InStr(AC.Offset(0, 1), "EINSATZ I") Then
    TbX.Range("G37").Cells(i, 1) = AC.Value
    i = i + 1
    End If
    Next AC
    End With
    End Sub
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 23:05:32
    Daenzn
    Oh man piet…
    Sorry ich bin so Dämlich. Bestimmt 100x gelesen und jetzt find ich es net. Ich probiere es gleich aus sobald ich nen Laptop zur Hand hab.
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 23:19:52
    Daenzn
    Also:
    Code ausprobiert und es folgt:

    Laufzeitfehler 9
    Index außerhalb des gütligen Bereiches

    und es geht wie vorher bereits hier eingefügt immer noch um den Bereich:
       Set TbX = Worksheets(TagSht)    'Zielsheet Mo-So.
    AW: Reupload: Übernahme Personendaten Tab1&2. VBA-Fragen
    13.12.2023 23:28:55
    Daenzn
    Ich habe dennoch den Code mehrfach ausprobiert.

    Die Befehle in Tabelle1 funktionieren (#, aa, Alle)

    Allerdings funktioniert die Übernahme der Namen in die Einsatzpläne nicht.
    Folgende werden nicht Übernommen:
    EINSATZ ZF
    EINSATZ GF
    EINSATZ

    Übernommen werden lediglich
    Tabelle Montag:
    EINSATZ ZF

    Restliche Tabellen:
    EINSATZ Stellv. ZF
    EINSATZ Fahrer ZF
    EINSATZ Stellv. GF.

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige