Excel Makro von anderen Tabellenbl. ausführen

Guten Morgen liebe Gemeinde Very Happy

Ich habe ein mittelschweres Problem und hoffe jemand kann mir weiterhelfen.
Vielen Dank dafür im voraus.

Und zwar habe ich ein Makro gebastelt (im wörtlichen Sinne, da ich absoluter Anfänger bin und das meiste mit dem Makrorecorder gemacht habe)
und das funktioniert auch erstmal in dem Tabellenblatt so wie es soll.

Nun zum Problem.
Ich möchte das Makro aus einem anderen Tabellenblatt per Button auslösen.
Diesen habe ich auch gebastelt und diesem das Makro zugeordnet.
Leider führt er nun Teile des Makros in dem Übersichtstabellenblatt aus und Teile in dem eigentlichen Tabellenblatt wo es auch hingehört.

Desweiteren soll er nicht in das Tabellenblatt in dem das Makro ausgeführt wird springen sondern in dem Menüblatt bleiben.
Auch eine Abschlussmeldung das dass Makro erfolgreich ausgeführt wurde wäre toll. Aber auch nur ein Gimmick.

Vielleicht hat jemand eine Idee, würde mich freuen. Ich poste mal den Code, auch wenn dieser nicht besonders schön ist.

Danke & Gruß
Sunny

Code:

Sub Tabelle_umwandeln_sortieren_formatieren()

‚Liste übertragen‘

Dim rangeZ As Range
On Error Resume Next
Set rangeZ = Worksheets(„Downloadliste SAP“).Columns(„K“).SpecialCells(xlCellTypeConstants)
If Not rangeZ Is Nothing Then rangeZ.EntireRow.Copy Worksheets(„Arbeitsliste“).Range(„A1“)

‚Spalten löschen‘
Sheets(„Arbeitsliste“).Range(„A:A“).Delete
Sheets(„Arbeitsliste“).Range(„L:L“).Delete
Sheets(„Arbeitsliste“).Range(„AA:AD“).Delete
Sheets(„Arbeitsliste“).Range(„AD:AG“).Delete
Sheets(„Arbeitsliste“).Range(„AF:AI“).Delete
Sheets(„Arbeitsliste“).Range(„I:I“).Delete
Sheets(„Arbeitsliste“).Range(„U:U“).Delete
Sheets(„Arbeitsliste“).Range(„Y:Y“).Delete

'Spaltenüberschriften ändern
Sheets(„Arbeitsliste“).Range(„A1“).FormulaR1C1 = „Kreditor“

Sheets(„Arbeitsliste“).Range(„B1“).FormulaR1C1 = „Lieferantenname“

Sheets(„Arbeitsliste“).Range(„E1“).FormulaR1C1 = „Banfnummer“

Sheets(„Arbeitsliste“).Range(„F1“).FormulaR1C1 = „Banfposition“

Sheets(„Arbeitsliste“).Range(„G1“).FormulaR1C1 = „Anforderungsdatum“

Sheets(„Arbeitsliste“).Range(„H1“).FormulaR1C1 = „Lieferdatum Banf“

Sheets(„Arbeitsliste“).Range(„I1“).FormulaR1C1 = „Belegnummer“

Sheets(„Arbeitsliste“).Range(„N1“).FormulaR1C1 = „AB ja/nein“

Sheets(„Arbeitsliste“).Range(„O1“).FormulaR1C1 = „Materialnummer“

Sheets(„Arbeitsliste“).Range(„P1“).FormulaR1C1 = „Materialbezeichnung“

Sheets(„Arbeitsliste“).Range(„AA1“).FormulaR1C1 = „Anzahl Mahnungen“

Sheets(„Arbeitsliste“).Range(„AB1“).FormulaR1C1 = „AB-Nummer“

’ Sortieren Makro

Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).Select
Application.CutCopyMode = False
Selection.Cut
Sheets(„Arbeitsliste“).Columns(„A:A“).Select
ActiveSheet.Paste
Sheets(„Arbeitsliste“).Columns(„PRazz“).Select
Selection.Cut
Sheets(„Arbeitsliste“).Columns(„B:B“).Select
ActiveSheet.Paste
ActiveWindow.SmallScroll ToRight:=2
Sheets(„Arbeitsliste“).Columns(„AB:AB“).Select
Selection.Cut
Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).Select
ActiveSheet.Paste
Sheets(„Arbeitsliste“).Range(„P2“).Select
Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).ColumnWidth = 29.57
Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).ColumnWidth = 38.14
Sheets(„Arbeitsliste“).Columns(„PRazz“).Select
Selection.Delete Shift:=xlToLeft

‚Spaltenbreite an Text anpassen‘
Sheets(„Arbeitsliste“).Columns(„A:AA“).EntireColumn.AutoFit

‚Zeile einfügen‘
Sheets(„Arbeitsliste“).Rows(„1:1“).Select
Selection.Insert

‚Datumbeschriftung und heutiges Datum in Zeile 1 einfügen‘
Sheets(„Arbeitsliste“).Range(„A1“).FormulaR1C1 = „Datum:“
Sheets(„Arbeitsliste“).Range(„B1“).FormulaR1C1 = „=Today()“

‚Zeile 1 u 2 fett markieren‘
Sheets(„Arbeitsliste“).Rows(„2:1“).Select
Selection.Font.Bold = True

‚Bemerkungsspalte‘
Sheets(„Arbeitsliste“).Range(„AA2“).Select
ActiveCell.FormulaR1C1 = „Bemerkungen“
Sheets(„Arbeitsliste“).Columns(„AA2“).Select
Selection.ColumnWidth = 55

’ zentriert Makro
Sheets(„Arbeitsliste“).Range(„A:AA“, „N:Z“).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

’ Linksbündig Makro
Sheets(„Arbeitsliste“).Range(„A:B“, „G:I“).Select
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

’ Zelle_färben Makro
Sheets(„Arbeitsliste“).Range(„A1:B1“).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
.PatternTintAndShade = 0
End With
’ Rahmen Makro
Sheets(„Arbeitsliste“).Range(„A1:B1,A2:AA2“).Select
Sheets(„Arbeitsliste“).Range(„A2“).Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With

’ Autofilter Makro
Sheets(„Arbeitsliste“).Rows(„2:2“).Select
Selection.Autofilter

’ Zeilenhöhe Makro
Sheets(„Arbeitsliste“).Rows(„2:2“).RowHeight = 33.75
Sheets(„Arbeitsliste“).Rows(„2:2“).Select
With Selection
.VerticalAlignment = xlTop
.WrapText = False
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With

End Sub

Hallo Sunny,

Leider führt er nun Teile des Makros in dem
Übersichtstabellenblatt aus und Teile in dem eigentlichen
Tabellenblatt wo es auch hingehört.
Desweiteren soll er nicht in das Tabellenblatt in dem das
Makro ausgeführt wird springen sondern in dem Menüblatt
bleiben.

daß manches in dem Blatt wo dein Button ist geschieht könnte an
ActiveSheet.Paste
liegen.
Das „Springen“ liegt an Activate und Select.
Wirf also 99 - 100% der Selects aus dem Code.

Fall1:
Sheets(„Arbeitsliste“).Columns(„AB:AB“).Select
Selection.Cut
Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).Select
ActiveSheet.Paste

abändern in
Sheets(„Arbeitsliste“).Columns(„AB:AB“).Cut
Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“).Paste
oder in
Sheets(„Arbeitsliste“).Columns(„AB:AB“).Cut destination:=Sheets(„Arbeitsliste“).Columns(„O:open_mouth:“)

Fall2:
Sheets(„Arbeitsliste“).Range(„A:AA“, „N:Z“).Select
With Selection

abändern in
With Sheets(„Arbeitsliste“).Range(„A:AA“, „N:Z“)

Mit Suchen—Ersetzen ersetze Sheets(„Arbeitsliste“) durch nichts.
Füge dann unten oberhalb von „End Sub“ ein End With ein.
Unterhalb von „‚Spalten löschen‘“
With Sheets(„Arbeitsliste“)

Korrigiere dann diese Zeile sodaß sie so ist wie derzeit
If Not rangeZ Is Nothing Then …
da dort auch ersetzt wurde.

Du löschst da einige Spalten. In deinem Code ist es sehr mühsam sofort zu sehen welche Spalten du denn löschst.
z.B., bezogen auf die Tabelle vor der Löschung löscht:
Sheets(„Arbeitsliste“).Range(„A:A“).Delete
Sheets(„Arbeitsliste“).Range(„L:L“).Delete
nicht die Spalten A und L, sondern A und M.

Sheets(„Arbeitsliste“).Range(„A:A,L:L“).Delete
würde A und L löschen

Die Setzung von Rahmen könntest du gewaltig kürzen.

Ändere das da:

Sheets("Arbeitsliste").Range("A1:B1,A2:AA2").Select
Sheets("Arbeitsliste").Range("A2").Activate
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
End With

ab in:

With .Range("A1:B1,A2:AA2").Borders
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
End With

Auch eine Abschlussmeldung das dass Makro erfolgreich
ausgeführt wurde wäre toll. Aber auch nur ein Gimmick.

Kein Akt, aber führe bitte erst die Änderungen durch.
Rücke dann wie ich Schleifeninhalte durch Leerzeichen ein (Markieren, dann Tabtaste)
Dann zeige hier den neuen Code und benutze dabei den Pre-Tag, wird unterhalb des Eingabefensters hier erklärt.

Und drängel nicht so, ich bearbeite Anfragen in der Schnelligkeit entsprechend der Höhe des vom Anfragers an mich geschickten Schecks.
Bei dir sehe ich da noch keinen Zahlungseingang :frowning: *gg*

Gruß
Reinhard

Guten Morgen Reinhard,

vielen Dank für deine detailierte Antwort und das du dich meinem Problem überhaupt angenommen hast.
Ich habe versucht deine Anmerkungen umzusetzen und den Code entsprechend abzuändern.
Leider konnte ich einige Sachen nicht genau deuten…

Das Makro läuft auch weiterhin nicht, bzw. so wie vor den Änderungen!

Unterhalb von „‚Spalten löschen‘“
With Sheets(„Arbeitsliste“)

Korrigiere dann diese Zeile sodaß sie so ist wie derzeit
If Not rangeZ Is Nothing Then …
da dort auch ersetzt wurde.

Hier weiß ich nicht genau ob ich es richtig umgesetzt habe?!

Du löschst da einige Spalten. In deinem Code ist es sehr
mühsam sofort zu sehen welche Spalten du denn löschst.
z.B., bezogen auf die Tabelle vor der Löschung löscht:
Sheets(„Arbeitsliste“).Range(„A:A“).Delete
Sheets(„Arbeitsliste“).Range(„L:L“).Delete
nicht die Spalten A und L, sondern A und M.

Sheets(„Arbeitsliste“).Range(„A:A,L:L“).Delete
würde A und L löschen

Diesen Teil habe ich so gelassen, da es in dem ursprünglichen Makro funktioniert, ich werde mich wenn es generell läuft nochmal damit auseinandersetzen und deinen Tipp beherzigen!

Und drängel nicht so, ich bearbeite Anfragen in der
Schnelligkeit entsprechend der Höhe des vom Anfragers an mich
geschickten Schecks.
Bei dir sehe ich da noch keinen Zahlungseingang :frowning: *gg*

Zahlung erfolgt wenn alles läuft, ist mit meiner Hausbank so abgesprochen :smiley: *gg*

Danke vorab für nochmalige Hilfe!
Viele Grüße u einen guten Start in den Tag!
SunnY!

Code:

Sub Tabelle\_umwandeln\_sortieren\_formatieren()

'Liste übertragen'

 Dim rangeZ As Range
 On Error Resume Next
 Set rangeZ = Worksheets("Downloadliste SAP").Columns("K").SpecialCells(xlCellTypeConstants)
 If Not rangeZ Is Nothing Then rangeZ.EntireRow.Copy Worksheets("Arbeitsliste").Range("A1")

 'Spalten löschen'
 With Sheets("Arbeitsliste")
 If Not rangeZ Is Nothing Then rangeZ.EntireRow.Copy Worksheets("Arbeitsliste").Range("A1")

 Range("A:A").Delete
 Range("L:L").Delete
 Range("AA:AD").Delete
 Range("AD:AG").Delete
 Range("AF:AI").Delete
 Range("I:I").Delete
 Range("U:U").Delete
 Range("Y:Y").Delete


 'Spaltenüberschriften ändern
Range("A1").FormulaR1C1 = "Kreditor"

Range("B1").FormulaR1C1 = "Lieferantenname"

Range("E1").FormulaR1C1 = "Banfnummer"

Range("F1").FormulaR1C1 = "Banfposition"

Range("G1").FormulaR1C1 = "Anforderungsdatum"

Range("H1").FormulaR1C1 = "Lieferdatum Banf"

Range("I1").FormulaR1C1 = "Belegnummer"

Range("N1").FormulaR1C1 = "AB ja/nein"

Range("O1").FormulaR1C1 = "Materialnummer"

Range("P1").FormulaR1C1 = "Materialbezeichnung"

Range("AA1").FormulaR1C1 = "Anzahl Mahnungen"

Range("AB1").FormulaR1C1 = "AB-Nummer"


 ' Sortieren Makro

 Columns("O:open\_mouth:").Activate
 Application.CutCopyMode = False
 Selection.Cut
 Columns("A:A").Activate
 ActiveSheet.Paste
 Columns("P:stuck\_out\_tongue:").Activate
 Selection.Cut
 Columns("B:B").Activate
 ActiveSheet.Paste
 ActiveWindow.SmallScroll ToRight:=2
 Columns("AB:AB").Cut
 Columns("O:open\_mouth:").Paste
 Range("P2").Activate
 Columns("O:open\_mouth:").ColumnWidth = 29.57
 Columns("O:open\_mouth:").ColumnWidth = 38.14
 Columns("P:stuck\_out\_tongue:").Activate
 Selection.Delete Shift:=xlToLeft


 'Spaltenbreite an Text anpassen'
 Columns("A:AA").EntireColumn.AutoFit

 'Zeile einfügen'
 Rows("1:1").Activate
 Selection.Insert

 'Datumbeschriftung und heutiges Datum in Zeile 1 einfügen'
 Range("A1").FormulaR1C1 = "Datum:"
 Range("B1").FormulaR1C1 = "=Today()"

 'Zeile 1 u 2 fett markieren'
 Rows("2:1").Activate
 Selection.Font.Bold = True

 'Bemerkungsspalte'
 Range("AA2").Activate
 ActiveCell.FormulaR1C1 = "Bemerkungen"
 Columns("AA2").Activate
 Selection.ColumnWidth = 55

 ' zentriert Makro
 With Range("A:AA", "N:Z")
 .HorizontalAlignment = xlCenter
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With

 ' Linksbündig Makro
 With Range("A:B", "G:I")
 .HorizontalAlignment = xlLeft
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With

 ' Zelle\_färben Makro
 Range("A1:B1").Activate
 With Selection.Interior
 .Pattern = xlSolid
 .PatternColorIndex = xlAutomatic
 .Color = 49407
 .TintAndShade = 0
 .PatternTintAndShade = 0
 End With
' Rahmen Makro
 With .Range("A1:B1,A2:AA2").Borders
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 With Selection.Borders(xlEdgeTop)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 With Selection.Borders(xlEdgeBottom)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 With Selection.Borders(xlEdgeRight)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 With Selection.Borders(xlInsideVertical)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 With Selection.Borders(xlInsideHorizontal)
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With


' Zeilenhöhe Makro
 Rows("2:2").RowHeight = 33.75
 Rows("2:2").Activate
 With Selection
 .VerticalAlignment = xlTop
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With

 Dim i!, Spalte%
 Dim Suchbegriff As Range
 Spalte = 24 'Spalte X
 Application.ScreenUpdating = False
For i = 0 To 65536 'Maximale Zeilenzahl: 65536
 Set Suchbegriff = Columns(Spalte).Find(What:="REP\*", LookAt:=xlWhole)
 If Suchbegriff Is Nothing Then Exit For
 Rows(Suchbegriff.Row).Delete
Next
 Application.ScreenUpdating = True

' Autofilter Makro
 Rows("2:2").Activate
 Selection.Autofilter

 End With

End Sub

Hallo Sunny,

Leider konnte ich einige Sachen nicht genau deuten…
Das Makro läuft auch weiterhin nicht, bzw. so wie vor den
Änderungen!

nachstehend wie ich mir das vorgestellt hatte.
Ab der Codezeile
With Worksheets(„Arbeitsliste“)
ist der Code getestet und lief Fehlerfrei durch.
Ich habe ihn durch einen Button in einem anderen Blatt gestartet.

Zum Testen läßt man On Error Resume Next weg, damit man im Debugger sieht in welcher Zeile der Fehler ist.
Mach das mal mit deinem Code, setz ein Hochkomma vor die Codezeile.

Diese For-Schleife die du eben neu zeigtest muß noch eingabut werden.

Gruß
Reinhard

Option Explicit

Sub Tabelle\_umwandeln\_sortieren\_formatieren()
'Liste übertragen'
Dim rangeZ As Range
On Error GoTo hell
Set rangeZ = Worksheets("Downloadliste SAP").Columns("K").SpecialCells(xlCellTypeConstants)
If Not rangeZ Is Nothing Then rangeZ.EntireRow.Copy Worksheets("Arbeitsliste").Range("A1")
'Spalten löschen'
With Worksheets("Arbeitsliste")
 .Range("A:A").Delete
 .Range("L:L").Delete
 .Range("AA:AD").Delete
 .Range("AD:AG").Delete
 .Range("AF:AI").Delete
 .Range("I:I").Delete
 .Range("U:U").Delete
 .Range("Y:Y").Delete
 'Spaltenüberschriften ändern
 .Range("A1").Value = "Kreditor"
 .Range("B1").Value = "Lieferantenname"
 .Range("E1").Value = "Banfnummer"
 .Range("F1").Value = "Banfposition"
 .Range("G1").Value = "Anforderungsdatum"
 .Range("H1").Value = "Lieferdatum Banf"
 .Range("I1").Value = "Belegnummer"
 .Range("N1").Value = "AB ja/nein"
 .Range("O1").Value = "Materialnummer"
 .Range("P1").Value = "Materialbezeichnung"
 .Range("AA1").Value = "Anzahl Mahnungen"
 .Range("AB1").Value = "AB-Nummer"
 ' Sortieren Makro
 .Columns("O:open\_mouth:").Cut Destination:=.Columns("A:A")
 .Range("PRazz").Cut Destination:=.Columns("B:B")
 .Columns("AB:AB").Cut Destination:=.Columns("O:open\_mouth:")
 Application.CutCopyMode = False
 '.Range("P2").Select
 .Columns("O:open\_mouth:").ColumnWidth = 29.57
 .Columns("O:open\_mouth:").ColumnWidth = 38.14
 .Range("PRazz").Delete Shift:=xlToLeft
 'Spaltenbreite an Text anpassen'
 .Columns("A:AA").EntireColumn.AutoFit
 'Zeile einfügen'
 .Rows("1:1").Insert
 'Datumbeschriftung und heutiges Datum in Zeile 1 einfügen'
 .Range("A1").Value = "Datum:"
 .Range("B1").Formula = "=TODAY()"
 'Zeile 1 u 2 fett markieren'
 .Rows("2:1").Font.Bold = True
 'Bemerkungsspalte'
 .Range("AA2").Value = "Bemerkungen"
 .Range("AA2").ColumnWidth = 55
 ' zentriert Makro
 With .Range("A:AA", "N:Z")
 .HorizontalAlignment = xlCenter
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 ' Linksbündig Makro
 With .Range("A:B", "G:I")
 .HorizontalAlignment = xlLeft
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 ' Zelle\_färben Makro
 With .Range("A1:B1").Interior
 .Pattern = xlSolid
 .PatternColorIndex = xlAutomatic
 .Color = 49407
 .TintAndShade = 0
 .PatternTintAndShade = 0
 End With
 ' Rahmen Makro
 With .Range("A1:B1,A2:AA2").Borders
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 '.Range("A1:B1,A2:AA2").Borders(xlDiagonalDown).LineStyle = xlNone
 '.Range("A1:B1,A2:AA2").Borders(xlDiagonalUp).LineStyle = xlNone
 ' Autofilter Makro
 .Rows("2:2").AutoFilter
 ' Zeilenhöhe Makro
 With .Rows("2:2")
 .RowHeight = 33.75
 .VerticalAlignment = xlTop
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
End With
hell:
If Err.Number = 0 Then
 MsgBox "Aufgabe wurde problemlos erledigt"
Else
 MsgBox Err.Number & vbCrLf & Err.Description
End If
End Sub

Hallo Reinhard,

vielen dank für deine Antwort.
Das Makro so wie du es angepasst hast, läuft sauber durch wenn ich es in dem Tabellenblatt ‚Arbeitsliste‘ starte.
Sobald ich es per Button aus dem Tabellenblatt ‚Eingabe‘ starte kommt folgende Fehlermeldung:
1004: Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden.

Ich verzweifel nochmal an dem Ding…

Lg Sunny

Code:

Option Explicit

Sub Tabelle\_umwandeln\_sortieren\_formatieren()
'Liste übertragen'
Dim rangeZ As Range
On Error GoTo hell
Set rangeZ = Worksheets("Downloadliste SAP").Columns("K").SpecialCells(xlCellTypeConstants)
If Not rangeZ Is Nothing Then rangeZ.EntireRow.Copy Worksheets("Arbeitsliste").Range("A1")
'Spalten löschen'
With Worksheets("Arbeitsliste")
 .Range("A:A").Delete
 .Range("L:L").Delete
 .Range("AA:AD").Delete
 .Range("AD:AG").Delete
 .Range("AF:AI").Delete
 .Range("I:I").Delete
 .Range("U:U").Delete
 .Range("Y:Y").Delete
 'Spaltenüberschriften ändern
 .Range("A1").Value = "Kreditor"
 .Range("B1").Value = "Lieferantenname"
 .Range("E1").Value = "Banfnummer"
 .Range("F1").Value = "Banfposition"
 .Range("G1").Value = "Anforderungsdatum"
 .Range("H1").Value = "Lieferdatum Banf"
 .Range("I1").Value = "Belegnummer"
 .Range("N1").Value = "AB ja/nein"
 .Range("O1").Value = "Materialnummer"
 .Range("P1").Value = "Materialbezeichnung"
 .Range("AA1").Value = "Anzahl Mahnungen"
 .Range("AB1").Value = "AB-Nummer"
 ' Sortieren Makro
 .Columns("O:open\_mouth:").Cut Destination:=.Columns("A:A")
 .Range("P:stuck\_out\_tongue:").Cut Destination:=.Columns("B:B")
 .Columns("AB:AB").Cut Destination:=.Columns("O:open\_mouth:")
 Application.CutCopyMode = False
 '.Range("P2").Select
 .Columns("O:open\_mouth:").ColumnWidth = 29.57
 .Columns("O:open\_mouth:").ColumnWidth = 38.14
 .Range("P:stuck\_out\_tongue:").Delete Shift:=xlToLeft
 'Spaltenbreite an Text anpassen'
 .Columns("A:AA").EntireColumn.AutoFit
 'Zeile einfügen'
 .Rows("1:1").Insert
 'Datumbeschriftung und heutiges Datum in Zeile 1 einfügen'
 .Range("A1").Value = "Datum:"
 .Range("B1").Formula = "=TODAY()"
 'Zeile 1 u 2 fett markieren'
 .Rows("2:1").Font.Bold = True
 'Bemerkungsspalte'
 .Range("AA2").Value = "Bemerkungen"
 .Range("AA2").ColumnWidth = 55
 ' zentriert Makro
 With .Range("A:AA", "N:Z")
 .HorizontalAlignment = xlCenter
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 ' Linksbündig Makro
 With .Range("A:B", "G:I")
 .HorizontalAlignment = xlLeft
 .VerticalAlignment = xlBottom
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .IndentLevel = 0
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
 ' Zelle\_färben Makro
 With .Range("A1:B1").Interior
 .Pattern = xlSolid
 .PatternColorIndex = xlAutomatic
 .Color = 49407
 .TintAndShade = 0
 .PatternTintAndShade = 0
 End With
 ' Rahmen Makro
 With .Range("A1:B1,A2:AA2").Borders
 .LineStyle = xlContinuous
 .ColorIndex = 0
 .TintAndShade = 0
 .Weight = xlThin
 End With
 '.Range("A1:B1,A2:AA2").Borders(xlDiagonalDown).LineStyle = xlNone
 '.Range("A1:B1,A2:AA2").Borders(xlDiagonalUp).LineStyle = xlNone

 ' Zeilenhöhe Makro
 With .Rows("2:2")
 .RowHeight = 33.75
 .VerticalAlignment = xlTop
 .WrapText = False
 .Orientation = 0
 .AddIndent = False
 .ShrinkToFit = False
 .ReadingOrder = xlContext
 .MergeCells = False
 End With
End With

'Löscht Zeilen mit Inhalt Rep\*

Dim i!, Spalte%
Dim Suchbegriff As Range
Spalte = 24 'Spalte X
Application.ScreenUpdating = False
For i = 0 To 65536 'Maximale Zeilenzahl: 65536
 Set Suchbegriff = Columns(Spalte).Find(What:="REP\*", LookAt:=xlWhole)
 If Suchbegriff Is Nothing Then Exit For
 Rows(Suchbegriff.Row).Delete
Next
Application.ScreenUpdating = True

' Autofilter Makro
 Sheets("Arbeitsliste").Rows("2:2").Select
 Selection.Autofilter

'Msg Box
hell:
If Err.Number = 0 Then
 MsgBox "Aufgabe wurde problemlos erledigt"
Else
 MsgBox Err.Number & vbCrLf & Err.Description
End If
End Sub

Hallo Sunny,

Das Makro so wie du es angepasst hast, läuft sauber durch wenn
ich es in dem Tabellenblatt ‚Arbeitsliste‘ starte.
Sobald ich es per Button aus dem Tabellenblatt ‚Eingabe‘
starte kommt folgende Fehlermeldung:
1004: Die Select-Methode des Range-Objektes konnte nicht
ausgeführt werden.

mal grundsätzlich, grad in länegerem Code wird das deutlich, neben
der reinen Fehlermeldung, deren Angabe natürlich wichtig ist,
ist die Angabe der Codezeile wo der Fehler auftritt genauso wichtig.

in dem Code den ich dir angepasst habe kommt diese Fehlermeldung garantiert nicht, von mir aus eine andere.
Denn ich habe da gar kein Select mehr drinnen, oder habe ich eines übersehen?

Mach ein Hochkomma vor On Error Goto hell und starte den Code.
Ich nehme an diese Codezeile wird markiert:
Sheets(„Arbeitsliste“).Rows(„2:2“).Select

Und die stand NICHT in meinem Code.
Da steht:
.Rows(„2:2“).AutoFilter

Warum hast du die Codezeile gelöscht?

Allgemein zu Select/Activate, zu 99,9% sind die unnötig und erschweren das lesen des Codes u.v.m.
Speziell zu deiner fehlermeldung, Select funktioniert nur auf dem gerade aktiven Blatt. Ansonsten Fehlermeldung wie bei dir.

Gruß
Reinhard