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

Forumthread: Makro Funktioniert nach dem Kopieren nicht mehr

Makro Funktioniert nach dem Kopieren nicht mehr
19.02.2018 10:29:53
Stefan
Hallo,
ich habe mir ein Makro aufgezeichnet. Das Blatt in dem sich das Makro befindet ist eine Vorlage. Hier ist alles iO.
Jetzt kopiere ich die Vorlage und das Makro arbeitet nicht mehr.
Ich vermute es liegt daran das im Code das Blatt mit "Vorlage" benannt ist und die Kopie natürlich anders heißt. Nur der Weg zum lösen fehlt mir.
Könnt Ihr mmir bitte Helfen?
------
Private Sub CommandButton1_Click()
' niO_Sortieren Makro
' Sortiert die Spalte Menge niO von höchster Anzahl zu kleinster Anzahl von niO Teilen
Range("A28:L116").Select
ActiveWindow.SmallScroll Down:=-69
ActiveWorkbook.Worksheets("Vorlage").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Vorlage").Sort.SortFields.Add Key:=Range( _
"G28:G116"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Vorlage").Sort
.SetRange Range("A28:L116")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("F28").Select
ActiveWindow.SmallScroll Down:=6
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Funktioniert nach dem Kopieren nicht mehr
19.02.2018 10:37:19
Ralf
Hi Stefan,
versuch es so (und ersetze in Worksheets("Vorlage") den Begriff Vorlage durch den gewünschten Tabnamen):

Private Sub CommandButton1_Click()
' niO_Sortieren Makro
' Sortiert die Spalte Menge niO von höchster Anzahl zu kleinster Anzahl von niO Teilen
With ActiveWorkbook.Worksheets("Vorlage")
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range( _
"G28:G116"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With .Sort
.SetRange Range("A28:L116")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

Anzeige
AW: Makro Funktioniert nach dem Kopieren nicht mehr
19.02.2018 10:57:25
Stefan
Hallo Ralf,
erstmal danke für die schnelle Hilfe,
gerade der Teil mit
>> (und ersetze in Worksheets("Vorlage") den Begriff Vorlage durch den gewünschten Tabnamen): ist ja der Bereich der mein "Problem" ist. Ich muss das Spiel jede Woche machen und müsste dann ja immer KW 7, KW8, usw. umbenennen. Da hatte ich gehofft das es eine Möglichkeit gibt das nicht ich dem Makro sagen muss in welcher Mappe es ist, sondern das sich das Makro den Namen der Mappe holt.
Der Wunsch wäre Mappe Vorlage Kopieren, umbenennen in KW 8 und alles klappt.....
Zu naiv?
Anzeige
AW: Makro Funktioniert nach dem Kopieren nicht mehr
19.02.2018 12:57:11
Rudi
Hallo,
ActiveSheet statt ActiveWorkbook.Worksheets("Vorlage")
Gruß
Rudi
AW: Makro Funktioniert nach dem Kopieren nicht mehr
19.02.2018 13:27:31
Ralf
...naja, ActiveSheet muss ja nicht zwahngsläufig KW 8 sein...
Allerdings, wenn es jedesmal ein anderes Blatt sein soll, muss vorher klar sein, welches es denn sein soll. Ist es immer das mit der aktuellen Kalenderwoche mit einem voranstehenden KW?
Dann ginge das so:
Dim kw As String
kw = "KW " & WorksheetFunction.WeekNum(Date, 2)'aktuelle Kalenderwoche von Heute ermitteln,  _
Woche beginnt Montags
With ActiveWorkbook.Worksheets(kw)
Die exakte Schreibweise müsstest Du jedoch nochan Deine Gegebenheiten anpassen...
Anzeige
AW: Makro Funktioniert nach dem Kopieren nicht mehr
20.02.2018 06:26:20
Stefan
Hallo Rudi, Hallo Ralf,
danke für eure Hilfe.
Ich habe jetzt erstmal den leichten, schnellen Weg genommen und konnte es über die AchtiveSheet Variante lösen. Benenne das Blatt dann noch manuell um.
Die Lösung von Ralf geht dann ja noch weiter, gefällt mir sehr. Allerdings habe ich gestern abend "neue Aufgaben" bekommen und muss es erstmal an die Seite legen. Danke trotzdem, ich werde mich damit befassen wenn es hier etwas ruhiger wird und ich wieder Zeit zum Basten habe.
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Makro-Funktioniert-nach-dem-Kopieren-nicht-mehr


Schritt-für-Schritt-Anleitung

  1. Makro aufzeichnen: Starte Excel und zeichne dein Makro auf, während du die gewünschten Schritte ausführst.

  2. Code anpassen: Achte darauf, die Blattnamen im Code so anzupassen, dass sie mit deinen Kopien übereinstimmen. Beispiel:

    With ActiveWorkbook.Worksheets("Vorlage")

    Ändere "Vorlage" in den Namen deines neuen Blattes.

  3. Verwende ActiveSheet: Wenn das Makro für verschiedene Kopien genutzt werden soll, ersetze ActiveWorkbook.Worksheets("Vorlage") durch ActiveSheet.


Häufige Fehler und Lösungen

  • Fehler: Makro findet das Blatt nicht
    Lösung: Stelle sicher, dass der Blattname korrekt ist. Wenn du das Blatt nach dem Kopieren umbenennst, musst du den Namen im Makro anpassen.

  • Fehler: ActiveSheet funktioniert nicht
    Lösung: Überprüfe, ob das aktive Blatt tatsächlich das ist, mit dem du arbeiten möchtest. Möglicherweise musst du das Blatt manuell aktivieren.


Alternative Methoden

Wenn du das Makro dynamischer gestalten möchtest, kannst du den Namen des Blattes automatisch ermitteln. Zum Beispiel kannst du die aktuelle Kalenderwoche verwenden:

Dim kw As String
kw = "KW " & WorksheetFunction.WeekNum(Date, 2) 'Aktuelle Kalenderwoche ermitteln
With ActiveWorkbook.Worksheets(kw)

Diese Methode spart dir das manuelle Umbenennen der Blätter.


Praktische Beispiele

Hier ein einfaches Beispiel, wie du dein Makro umschreiben kannst, um die aktuelle Woche zu berücksichtigen:

Private Sub CommandButton1_Click()
    Dim kw As String
    kw = "KW " & WorksheetFunction.WeekNum(Date, 2)
    With ActiveWorkbook.Worksheets(kw)
        .Sort.SortFields.Clear
        .Sort.SortFields.Add Key:=Range("G28:G116"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With .Sort
            .SetRange Range("A28:L116")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub

Tipps für Profis

  • Verwende Variablen: Nutze Variablen für Blattnamen, um deinen Code flexibler zu gestalten.
  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um das Makro robuster zu machen.
  • Regelmäßige Backups: Erstelle Sicherungskopien deiner Arbeitsmappe, bevor du Änderungen vornimmst.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nicht nach dem Kopieren?
Das liegt oft daran, dass der Blattname im Code nicht mehr mit dem Namen des kopierten Blattes übereinstimmt.

2. Wie kann ich mein Makro so anpassen, dass es mit verschiedenen Blattnamen funktioniert?
Du kannst ActiveSheet verwenden, um immer auf das aktuell aktive Blatt zuzugreifen, oder den Blattnamen durch eine Variable ersetzen.

3. Ist es möglich, das Makro automatisch den Blattnamen anpassen zu lassen?
Ja, indem du Funktionen wie WorksheetFunction.WeekNum verwendest, kannst du den Blattnamen dynamisch generieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige