AW: Zellwert bedingt, Bereich kopieren
13.06.2020 20:01:19
Werner
Hallo,
diese beiden Makros in ein allgemeines Modul:
Option Explicit
Public Sub Status()
Dim i As Long, loLetzte As Long, strMitte As String
Dim strOben As String, strUnten As String
Dim raAnstehend As Range, raVerzögert As Range
Application.ScreenUpdating = False
' Übersicht soll erneuert werden
Worksheets("Übersicht").Range("A4:I1000").ClearContents
With Worksheets("Datenblatt")
loLetzte = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 4 To loLetzte - 1 Step 3
strMitte = .Cells(i, "B")
strOben = .Cells(i, "B").Offset(-1)
strUnten = .Cells(i, "B").Offset(1)
' Verzögert
If strOben = strUnten And strMitte strOben And strMitte strUnten Then
If raVerzögert Is Nothing Then
Set raVerzögert = .Range("A" & i & ":D" & i)
Else
Set raVerzögert = Union(raVerzögert, .Range("A" & i & ":D" & i))
End If
' Anstehend
ElseIf strMitte = strOben And strOben strUnten Then
If raAnstehend Is Nothing Then
Set raAnstehend = .Range("A" & i + 1 & ":D" & i + 1)
Else
Set raAnstehend = Union(raAnstehend, .Range("A" & i + 1 & ":D" & i + 1))
End If
End If
Next i
If Not raVerzögert Is Nothing Then
raVerzögert.Copy
Worksheets("Übersicht").Range("A4").PasteSpecial Paste:=xlPasteValues
End If
If Not raAnstehend Is Nothing Then
raAnstehend.Copy
Worksheets("Übersicht").Range("F4").PasteSpecial Paste:=xlPasteValues
End If
End With
Application.CutCopyMode = False
Set raVerzögert = Nothing: Set raAnstehend = Nothing
Call Kopieren_Done
End Sub
Sub Kopieren_Done()
Dim i As Long, raBereich As Range
Application.ScreenUpdating = False
Worksheets("Übersicht").Range("K4:N1000").ClearContents
With Worksheets("Datenblatt")
For i = 3 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "B") = "Done" Then
If raBereich Is Nothing Then
Set raBereich = (.Range("A" & i & ":D" & i))
Else
Set raBereich = Union(raBereich, .Range("A" & i & ":D" & i))
End If
End If
Next i
If Not raBereich Is Nothing Then
raBereich.Copy
Worksheets("Übersicht").Range("K4").PasteSpecial Paste:=xlPasteValues
End If
End With
Application.CutCopyMode = False
Set raBereich = Nothing
End Sub
Ins Codemodul von "DieseArbeitsmappe"
Private Sub Workbook_Open()
Call Status
End Sub
Im Zielblatt in Zelle A2: Verzögert
in Zellen A3 bis D3 die Überschriften ID / Status / Schritt / Beschreibung
Für Anstehend dann ab Spalte F und für Überprüfung ab Spalte K
Also die jeweiligen Datenbereiche immer mit einer Leerspalte dazwischen.
Im Moment kann ich nichts hochladen.
Gruß Werner