ich hab eine Arbeitsmappe mit 5 Tabellen, möchte nun in Tabelle 1 einen Button setzten welcher alle Tabellen nach rot Ausgefüllten Zellen durchsucht und diese dann in Tabelle 5 kopiert. Der inhalt der roten zellen in Tabelle 1-4 sollen nach dem kopieren gelöscht werden. Button und so alles keine Problem aber nen code zum suchen in allen Tabellen und dann kopiert klappt irgendwie nicht.
Könnt Ihr mit bitte ein paar tips oder vorschläge geben wie ich das angehen soll?
hier ein sehr rudimentärer Code, den ich auch nicht unbedingt empfehle. Was ist denn das Kriterium, weshalb die Zellen rot werden? Kann man die Suchbereiche eingrenzen?
Code:
Option Explicit
Sub redCells() Dim wks As Worksheet Dim rng As Range Dim redRange As Range
For Each wks In ThisWorkbook.Worksheets If wks.CodeName <> "SheetVonDemDuStartest" Then For Each rng In wks.UsedRange If rng.Interior.Color = vbRed Then SheetVonDemDuStartest.Cells(UsedRange.Rows.Count + 1, 1).Value = rng.Value If redRange Is Nothing Then Set redRange = rng Else Set redRange = Union(redRange, rng) End If End If Next rng redRange.Delete Set redRange = Nothing End If Next wks End Sub
es ist eine Art Lagerverwaltung. Auf allen Tabellenblätter stehen in A5 bis E5 verscheidene Daten, wenn ein Mitarbeiter in Spalte F ein Datum eingibt wird die Zeile von A bis F rot Am Monatsende möchte ich alle roten zeilen in ein extra Tabellenblatt kopieren und diese dann von den anderen Tabellen löschen.
also mein Code oben ist getestet und funktioniert. Wenn Du Interesse an einer Optimierung hast, lade mal bitte eine Beispieldatei mit dem selben Aufbau wie dein Original hoch.
Private Sub CommandButton1_Click() Dim wks As Worksheet Dim i As Long
For Each wks In ThisWorkbook.Worksheets If wks.CodeName <> "Tabelle1" And wks.CodeName <> "Tabelle5" Then For i = 7 To 5 Step -1 With wks If .Cells(i, 4).Value > 0 Then Tabelle5.Cells(Tabelle5.UsedRange.Rows.Count + 1, 1).Resize(1, 4) = .Cells(i, 1).Resize(1, 4).Value .Rows(i).Delete End If End With Next i End If Next wks End Sub