Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Makros automatisch anpassen

Forumthread: Makros automatisch anpassen

Makros automatisch anpassen
16.05.2025 17:56:06
IseGrimm
Moin, wenn ich auf einem Tabellenblatt (TEST1) mit dem Makrorekorder ein Makro erstelle, das z.B. eine Liste mit Zahlen absteigend sortiert, habe ich keine Probleme. Wenn ich aber das Tabellenblatt kopiere (TEST2) und das Makro dort ausführe, bekomme ich immer eine Fehlermeldnung - wohl , weil sich das Makro weiterhin auf das Blatt TEST1 bezieht. Wie kann ich das ändern, ohne jedesmal im Makro händisch alle TEST1-Bezüge ändern zu müssen?
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros automatisch anpassen
16.05.2025 18:00:57
cysu11
Hi,

in dem du im Makro "Test1" oder "Test 2" durch (ThisWorkbook.ActiveSheet.Name).

LG, Alexandra
AW: Makros automatisch anpassen
16.05.2025 18:21:21
IseGrimm
Danke für die schnelle Antwort - kommt aber leider eine Fehlermeldung...
Selection.AutoFilter
ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:= _
Range("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort
"Laufzeitfehler '91' Objektvariable oder WITH-Blockvariable nicht festgelegt..."
(zumindest mal eine neue Fehlermeldung :D)
Anzeige
AW: Makros automatisch anpassen
16.05.2025 18:27:01
cysu11
Hi,

probiere mal so:

Selection.AutoFilter
ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveSheet.AutoFilter.Sort.SortFields.Add2 Key:= _
Range("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveSheet.AutoFilter.Sort
AW: Makros automatisch anpassen
16.05.2025 20:35:10
Yal
Hallo IseGrimm,

poste bitte immer einen vollständigen Code: von "Sub ..." bis "End Sub". Sonst werden die Lösungen genauso unvollständig sein und Du wirst als "VBA nur mit Rekorder" wahrscheinlich nicht allein vervollständigen können.

Benutze ebenfalls den Schlater "Code <pre><code>" und poste dein Code genau zwischen
<pre><code class=language-vba> und </code></pre>

Wenn man davon ausgeht, dass das Makro immer auf dem Blatt wirken soll, wo gerade das aktives Blatt, kann man ActiveSheet verwenden:
Sub Test()

With ActiveSheet.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add2 Key:=Range("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
...
End With
End Sub


"With" ist eine Abkürzung, um die Wiederholung von Bezeichner zu vermeiden. Alles, was mit einem Punkt anfängt, bezieht sich auf dem With.
Aus
ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort.SortFields.Clear

ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort.SortFields.Add2 Key:=Range("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

wird
With ActiveWorkbook.Worksheets(ThisWorkbook.ActiveSheet.Name).AutoFilter.Sort.SortFields

.Clear
.Add2 Key:=Range("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End With


Du musst ebenfalls Range("AE4") mit einem Blattbezug genauer defineren:
Sub Test()

With ActiveSheet.AutoFilter.Sort
.SortFields.Clear
.SortFields.Add2 Key:=ActiveSheetRange("AE4"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
...
End With
End Sub

VG
Yal
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18