Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Ganz großes Problem

Betrifft: Ganz großes Problem von: Falo
Geschrieben am: 25.08.2014 18:39:53

Hallo Excel Profis,
Ich habe ein großes Problem.

Es muss erst in der Datei Stunden Tag der Tag abgefragt werden, (A2) und in der Datei lfd Monat Plan gesucht werden Zeile 5.

Es soll aus Datei lfd Monat Plan die Personal Nr. (ab B7 bis B25) ausgelesen werden, und in der Datei Stunden Tag (F2) gesucht werden, wie viel Stunden (J2) der Mitarbeiter an diesem Tag gearbeitet hat. Und die Std. in die Datei lfd Monat geschrieben werden

Ich weiß das ist schwer zu verstehen ich hoffe ich habe es trotzdem einigermaßen
Verständlich erklärt

Datei: lfd Monat https://www.herber.de/bbs/user/92287.xls

Datei: lfd Monat Plan https://www.herber.de/bbs/user/92288.xls

Datei: Stunden Tag https://www.herber.de/bbs/user/92289.xls

Mit freundlichen Grüßen aus dem Sauerland
Olaf

  

Betrifft: AW: Ganz großes Problem von: fcs
Geschrieben am: 27.08.2014 12:39:27

Hallo Falo,

ich verstehe den Umweg über die Datei "lfd Monat Plan.xls" nicht.
Die Personalnummern in Spalte B und der Tag in Zeile 5 sthen doch auch/schon im Zielblatt von "lfd Monat.xls". Also kann man die Personalnummern in "lfd Monat" von B7 bis B25 abarbeiten und die Daten aus "Stunden Tag" in der entsprechendne Spalte eintragen.

Gruß
Franz


  

Betrifft: AW: Ganz großes Problem von: Falo
Geschrieben am: 28.08.2014 18:53:53

Hallo Franz,
Du hast natürlich Recht, hättest Du denn einen Tipp für mich?.

Mit freundlichen Grüßen aus dem Sauerland


  

Betrifft: AW: Ganz großes Problem von: fcs
Geschrieben am: 29.08.2014 14:04:19

Hallo Falo,

hier ein Makro für die Übernahme der Tages-Daten in das Blatt für den lfd. Monat.

Beim Start des Makros müssen beide Dateien geöffnet sein.

Gruß
Franz

'Makro in einem allgemeinen Modul der Datei "lfd Monat.xls"
Sub DatenHolenAus_Stunden_Tag()
    Dim Zeile_Q As Long
    Dim ZeileMax As Long
    Dim Zeile_Z As Long, Spalte_Z As Long, varDatum
    Dim rngTreffer As Range, rngSuche As Range
    Dim varPersNr_Z, varPersNr_Q
    Dim wkbQuelle As Workbook, wksQuelle As Worksheet, strQuelle As String
    Dim wkbZiel As Workbook, wksZiel As Worksheet
    
    Set wkbZiel = ThisWorkbook
    Set wksZiel = wkbZiel.Worksheets(1)
    
    strQuelle = "Stunden Tag.xls" 'Name der Datei mit den Tages Daten
    'prüfen, ob Datei schon geöffnet ist
    For Each wkbQuelle In Application.Workbooks
      If LCase(wkbQuelle.Name) = LCase(strQuelle) Then
        Exit For
      End If
    Next
    If wkbQuelle Is Nothing Then
        MsgBox "Die Datei ""Stunden Tag.xls"" ist noch nicht geöffnet, " _
          & "bitte Datei erst öffnen"
        GoTo Beenden
    End If
    
    Set wksQuelle = wkbQuelle.Worksheets(1)
    
    With Application
      .EnableEvents = False
      .ScreenUpdating = False
    End With
    
    With wksQuelle
      varDatum = wksQuelle.Range("A2").Value
      If Not IsDate(varDatum) Then
        MsgBox "Kein Datum in Zelle A2 von Blatt """ & wksQuelle.Name _
            & """ in Datei " & wkbQuelle.Name
        GoTo Beenden
      End If
      'letzte Zeile mit Daten in Spalte F
      Zeile_Q = .Cells(.Rows.Count, 6).End(xlUp).Row
      If Zeile_Q > 1 Then
        'Suchbereich mit Personalnummern in Spalte F
        Set rngSuche = .Range(.Cells(2, 6), .Cells(Zeile_Q, 6))
      Else
        'keine Daten in Stunden Tag
        GoTo Beenden
      End If
    End With
    
    With wksZiel
      'Spalte mit Tag in "lfd Monat"
      Spalte_Z = 3 + Day(varDatum)
      ZeileMax = .Cells(.Rows.Count, 2).End(xlUp).Row 'letzte Zeile mit Personalnummer
      
      'Zeilen in Ziel (lfd Monat) abarbeiten
      For Zeile_Z = 7 To ZeileMax
        'Pers.-Nr. in "lfd Monat"
        varPersNr_Z = .Cells(Zeile_Z, 2).Value
        'Pers.-Nr. in "Stunden Tag"
        varPersNr_Q = Format(varPersNr_Z, "000000")
        With wksQuelle
            'PersonalNr in Spalte F suchen
            Set rngTreffer = rngSuche.Find(what:=varPersNr_Q, LookIn:=xlValues, _
                    lookAt:=xlWhole)
            If rngTreffer Is Nothing Then
                'PersonalNr ist nicht vorhanden
            Else
                'Personal-Nr. ist vorhanden - Wert aus Palte J in lfdMonat eintragen
                Zeile_Q = rngTreffer.Row
                wksZiel.Cells(Zeile_Z, Spalte_Z).Value = .Cells(Zeile_Q, 10).Value
            End If
        End With
      Next Zeile_Z
    End With
Beenden:
    With Application
      .EnableEvents = True
      .ScreenUpdating = True
    End With
    Set wkbZiel = Nothing: Set wksZiel = Nothing: Set wkbQuelle = Nothing: Set wksQuelle =  _
Nothing
    Set rngSuche = Nothing: Set rngTreffer = Nothing
End Sub



  

Betrifft: AW: Ganz großes Problem von: Falo
Geschrieben am: 04.09.2014 12:33:37

Hallo Franz,
entschuldige das ich mich jetzt erst Melde ich war ein bisschen krank

das klappt Super DANKE!! jetzt habe ich noch zwei Probleme

1.)
es ist möglich das in der Datei, Stunden Tag der Mitarbeiter zweimal vorkommt.
Das passiert wenn er z.B. von 6 bis 8 an der Maschine XY arbeitet, und von 8 bis 10 an Maschine AB weil, an der Maschine XY der Auftrag zu ende ist.
Es müssten beide Arbeitszeiten Addiert werden

2.)
Es gibt 8h - Schichtler und 7h – Schichtler

8h – Schichtler
Sind die die in der Spalte C , in Datei lfd Monat einen Eintrag haben z.B. IH/M 3 in Roter Schrift
8h – Schichtler haben auch schicht Arbeit, Früh (FR) ,Spät (SP),Nacht (NP) Frei (FS)
Es müsste in der Datei lfd Monat nachgeschaut werden, ob er Arbeitspflicht hat.
Hat er keine Arbeitspflicht (Zelle leer) und er hat gearbeitet, müsste in die Datei Stunden Tag
In die in die Spalte P eine "5" eingetragen werden.

7h – Schichtler
Sind die die in der Spalte C in Datei lfd Monat keinen Eintrag haben
Es müsste in der Datei lfd Monat nachgeschaut werden ob er mehr als 7 Std. gearbeitet hat ist das der fall müsste in die Datei Stunden Tag
In die in die Spalte P eine "MA" eingetragen werden

Es werden bei beiden Schichtlern die Zeiten trotzdem in die Datei Stunden Tag geschrieben
Das Sahnehäubchen wäre noch wenn bei den 8h – Schichtler die Zeiten entsprechend der
Der Schicht farbig reingeschrieben würden bei (FR) ,Schwarz (SP),Blau (NP) Rot (FS) Grün

Ich weiß das ist viel es wäre super wenn Du mir da noch mal helfen würdest

Mit freundlichen Grüßen aus dem Sauerland
Olaf


 

Beiträge aus den Excel-Beispielen zum Thema "Ganz großes Problem"