Hallo Thomas,
Lass den Kopf nicht hängen. Ja es ist ärgerlich, wenn man so einen Planungsfehler erst spät entdeckt und viel nacharbeiten muss. Aber das kommt vor.
Ich verstehe dich so, dass das jede Zelle in 'Projekte' in den Spalten F und G ein JA/Nein-Dropdownfeld ist.
Wählt man 'Ja' in Spalte F, wird das Makro 'Kundenauftrag' gestartet.
Wählt man 'Ja' in Spalte G, wird das Makro 'Auftragsdaten' gestartet.
Wird in einer beliebigen Zeile in Spalte 41 in 'Projekte' ein 'ü' eingetragen (Häkchen), so wird die gesamte Zeile kopiert und unter die letzte Zeile im Archiv kopiert.
Anschließend wird die kopierte Zeile gelöscht. Die darunter stehenden Zeilen rutschen entsprechend hoch.
Ist das so richtig? Dann sollte dieser VBA-Code im Modul von 'Projekte' alles erledigen.
Bitte teste und melde dich bei Bedarf.
Viele Grüße von Heiko
Private Sub Worksheet_Change(ByVal Target As Range)
'Hier die Parameter eintragen
Const c_lngSpNrAuftrAbgeschl As Long = 41 'Spaltennummer des Auftrag-abgeschlossen-Häkchens
Const c_strArchiv As String = "Archiv" 'Blattname des Archives
Const c_lngZeileMaxArchiv As Long = 65536 'maximale Zeilennummer des Archives
Dim lngZeileArchiv As Long
Dim wksArchiv As Excel.Worksheet
With Target.Cells
If .Column = 6 Then 'Spalte F
If ActiveCell.Value = "Ja" Then
'Ja in Spalte F gewählt
Call Kundenauftrag
End If
End If
If .Column = 7 Then 'Spalte G
If ActiveCell.Value = "Ja" Then
'Ja in Spalte G gewählt
Call Auftragsdaten
End If
End If
If Len(.Address) = 4 Then
If .Column = c_lngSpNrAuftrAbgeschl And .Value = "ü" Then
'Auftrag abgeschlossen
Set wksArchiv = ThisWorkbook.Sheets(c_strArchiv)
lngZeileArchiv = wksArchiv.Cells(wksArchiv.Rows.Count, 1).End(xlUp).Row + 1
If lngZeileArchiv = c_lngZeileMaxArchiv Then
MsgBox "Das Archiv ist voll!", vbCritical, "F E H L E R !"
Else
.EntireRow.Copy Destination:=wksArchiv.Rows(lngZeileArchiv)
.EntireRow.Delete xlShiftUp
End If
Set wksArchiv = Nothing
End If
End If
End With
End Sub
|