AW: Auftragssteuerung
28.05.2016 18:39:29
Matthias
Hallo!
Also konnte die Überschrift nur bis Spalte K sehen. Aber egal. Habe mal was gebastelt - wegen Ex2003 - und einige Teile beabeitet. Zu mindest nach meinen Vorstellungen und meiner Datei sollte das passen. Betrifft A,B,C,F und Teile von E. Für den Rest fehlt mir aber INPUT (kann auch an der nachgebauten Datei liegen). BSpw. bei D. Wo und was (welchen WErt) muss man eintragen. Worauf bezieht sich bei G die Zeile 1. In AUfrtagsteuerung steht ja in Spalte C in der ersten Zeile schon was. Für E habe ich den Filter vorbereitet - da weis ich aber nicht genau, was und wo zu prüfen wäre (also wie ich prüfe ob alle fertig sind - hängt wohl auch mit D zusammen).
Und dann ist da mE ein Umbruch in der Beschreibung. Zuerst sind wir bei den Aufträgen und plötzlich prüfen wir Arbeitsplätze (ab ca. F). Da bin ich noch nicht ganz mitgekommen, wo wir da wechseln. Ich dachte erst, alle Aufträge in einer Schleife durchgehen. Oder soll die SChleife noch kommen? Also da ggf. nochmal den Ablauf präzisieren.
Hier die Datei zum Prüfen, was falsch war bzw. ob die Schreibweise richtig war: (ist ohne COde)
https://www.herber.de/bbs/user/105840.xls
Und unten der Code. Hoffe das mit dem Codeumbruch hat geklappt, nutze ich sonst nicht.
Schau mal, ob das so stimmt. Wie gesagt in meiner Datei (deshalb beigefügt) hat es eigentlich funktioniert. Weiß nur nicht, ob die identisch mit deiner ist.
Vllt. hilft es aber erstmal weiter.
Viele Grüße MAtthias
Sub sortieren()
Dim letzte As Long
Dim letzte2 As Long
Dim prio
Dim i As Long
Dim arbeitsplatz
Dim spaltearbpl As Long
Dim auftragnr
Dim arbeitszeit
letzte = Worksheets("Aufträge").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Aufträge").Activate
'musste ich machen, da bei mir das Datum als Text stand und sonst nicht sortiert werden konnte
For i = 2 To letzte
If IsNumeric(Left(Worksheets("Aufträge").Cells(i, 7), 1)) Then _
Worksheets("Aufträge").Cells(i, 7) = CDate(Worksheets("Aufträge").Cells(i, 7))
Next i
Worksheets("Aufträge").Range("A2:U" & letzte).Sort Key1:=Worksheets("Aufträge").Range("B2"), _ _
Order1:=xlAscending, Key2:=Worksheets("Aufträge").Range("G2"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:= _
xlSortNormal, DataOption2:=xlSortTextAsNumbers
'suchen wo kein T steht
i = 2
While (Worksheets("Aufträge").Cells(i, 20) = "T")
i = i + 1
Wend
'jetzt sollte die Zeile da sein, die kein T hat
prio = Worksheets("Aufträge").Cells(i, 2)
arbeitsplatz = Worksheets("Aufträge").Cells(i, 11)
auftragnr = Worksheets("Aufträge").Cells(i, 3)
arbeitszeit = Worksheets("Aufträge").Cells(i, 8)
'Zeile für Eintrag suchen
letzte2 = Worksheets("Auftragsteuerung").Cells(Rows.Count, 1).End(xlUp).Row
'Datum eintragen
Worksheets("Auftragsteuerung").Cells(letzte2 + 1, 1) = Date
'Arbeitsplatz suchen
If Application.WorksheetFunction.CountIf(Worksheets("Auftragsteuerung").Rows(3), _
arbeitsplatz) > 0 Then _
spaltearbpl = Worksheets("Auftragsteuerung").Rows(3).Find(arbeitsplatz).Column
Else
MsgBox "Arbeitsplatz wurde nicht gefunden. Ende!"
End
End If
Worksheets("Auftragsteuerung").Cells(letzte2 + 1, spaltearbpl) = auftragnr
'F Zeit eintragen
Worksheets("Auftragsteuerung").Cells(letzte2 + 1, spaltearbpl + 1) = arbeitszeit
'D jetzt Status eintragen
'den sehen ich nicht , Datei nur nachgestellt
'E woran erkennt man, dass alle bearbeitet wurden?
' Vorschlag wäre nach Auftrag filtern und dann wo auch immer prüfen,
' könnte ggf. so gehen
' FIlter setzen
Dim filterbereich As Range
Dim zelle
Worksheets("Aufträge").Columns(3).AutoFilter Field:=1, Criteria1:="=" & auftragnr, _
Operator:=xlAnd, Visibledropdown:=False
Set filterbereich = Worksheets("Aufträge").Range("C2:C" & letzte).SpecialCells( _
xlCellTypeVisible)
For Each zelle In filterbereich
'hier nurn prüfen ob die Arbeitsplätze fertig ist
Next zelle
' Filter wieder raus oder alles anzeigen
Worksheets("Aufträge").Columns(3).AutoFilter
End Sub