998 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

mein Makro ist noch nicht funktionstüchtig.

Im Tabellenblatt 'Artikel_Report' stehen in Spalte A-L Daten. Jetzt setze ich 2 Filter:
1. Filter: alle Daten, die in Spalte L eine '1' stehen haben.
2. Filter: alle Daten, die in Spalte E eine "50" stehen haben.

Nun sollen alle Inhalte ab A2 kopiert und in das Tabellenblatt 'Aktionsplanung' in Spalte A unter die letzte beschriebene Zeile eingefügt werden.
Dann soll auf dem Tabellenblatt 'Artikel_Report' in Spalte L jede '1' entfernt werden.
Als letztes soll der Cursor im Tabellenblatt 'Aktionsplanung' in Zelle G2 stehen.

Sub Artikelauswahl_Prozent()
'
' Artikelauswahl_Prozent Makro

ActiveSheet.Range("$A$1:$L$121").AutoFilter Field:=12, Criteria1:="<>"
ActiveSheet.Range("$A$1:$L$121").AutoFilter Field:=5
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Aktionsplanung").Select
Range("A2").Select
ActiveSheet.Paste
Range("G2").Select
Sheets("Artikel_Report").Select
Application.CutCopyMode = False
Range("L2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("I123").Select
Sheets("Aktionsplanung").Select
Range("G2").Select
End Sub

Irgendwie funktioniert das Makro nicht richtig:
- die kopierten Daten stimmen nicht mit den gefilterten Daten überein
- die '1' auf dem Tabellenblatt 'Artikel_Report' in Spalte L wird nicht komplett gelöscht
- das Makro ist sehr langsam

Kann mir jemand helfen?

Gruß, Colatrinnkerr.

11 Antworten

0 Punkte
Beantwortet von
Hallo colatrinnkerr .-)

Das Makro warnt dich wenn die Zeilenlänge oder Spaltenbreite erreicht wurde!
Ruhig öfter nutzen :-)


Gruß Nighty


Sub Warnung()
If ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row = Rows.Count Then
MsgBox (Rows.Count & " Zeilen wurde erreicht ... die Selbstzerstörung wurde eingeleitet!")
Else
MsgBox (ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row & " Zeilen wurde erreicht ... alles im Limit!")
End If
If ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column = Columns.Count Then
MsgBox (Columns.Count & " Spalten wurden erreicht ... die Selbstzerstörung wurde eingeleitet")
Else
MsgBox (ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column & " Spalten wurden erreicht ... Alles im Limit")
End If
End Sub
...