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

Forumthread: Aktives Tabellenblatt auswählen

Aktives Tabellenblatt auswählen
04.02.2019 11:01:32
Dimi
Hi,
ich habe eine wahrscheinlich recht einfach zu lösende Frage.
Ich habe ein Makro mit dem Macrorecorder aufgenommen das eine Tabelle sortieren soll. Das funktioniert auch tadellos. Allerdings ist in dem Makro das Tabellenblatt ("Beispiel1") hinterlegt. Wenn ich ein zweites Tabellenblatt anlege ("Beispiel2") sortiert mein Makro immer nur das erste Blatt. Besteht die Möglichkeit untenstehendes Makro so umzuschreiben das es unabhängig vom Namen immer das aktiv ausgewählte Tabellenblatt sortiert.
Die Tabellenblätter sind alle exakt gleich aufgebaut.
Liebe Grüße
Dimi

Sub Sortieren()
' Sortieren Makro
' Tastenkombination: Strg+s
Range("B5:N500").Select
Range("B500").Activate
ActiveWorkbook.Worksheets("Beispiel1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Beispiel1").Sort.SortFields.Add Key:=Range("E5:E500"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Beispiel1").Sort.SortFields.Add Key:=Range("D5:D500"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Beispiel1").Sort
.SetRange Range("B5:N500")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aktives Tabellenblatt auswählen
04.02.2019 11:12:06
Sven
Hallo Dimi,
nimm ActiveWorkbook.ActiveSheet statt ActiveWorkbook.Worksheets("Beispiel1").
Grüße
Sven
AW: Aktives Tabellenblatt auswählen
04.02.2019 11:16:23
Dimi
Hi Sven,
Perfekt. Vielen Dank :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Aktives Tabellenblatt in Excel VBA auswählen


Schritt-für-Schritt-Anleitung

Um das aktive Tabellenblatt in Excel VBA auszuwählen und unabhängig vom Namen zu arbeiten, kannst Du die ActiveSheet-Eigenschaft verwenden. Hier ist eine einfache Anleitung, wie Du Dein Makro anpassen kannst:

  1. Öffne den Visual Basic for Applications (VBA) Editor mit ALT + F11.
  2. Finde Dein Makro und ersetze den Code für die Sortierung wie folgt:
Sub Sortieren()
    ' Sortieren Makro für das aktive Tabellenblatt
    Range("B5:N500").Select
    Range("B500").Activate
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("E5:E500"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range("D5:D500"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("B5:N500")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
  1. Speichere und schließe den VBA-Editor.
  2. Führe das Makro aus, während das gewünschte Tabellenblatt aktiv ist.

Häufige Fehler und Lösungen

  • Fehler: Das Makro sortiert nicht das aktive Tabellenblatt.

    • Lösung: Stelle sicher, dass Du ActiveSheet statt ActiveWorkbook.Worksheets("Beispiel1") verwendest.
  • Fehler: Fehlermeldung beim Ausführen des Makros.

    • Lösung: Überprüfe, ob der Zellbereich B5:N500 korrekt ist und ob die Daten in diesem Bereich vorhanden sind.

Alternative Methoden

Du kannst auch die Worksheets-Eigenschaft in Kombination mit einer Variablen verwenden, um das aktive Tabellenblatt zu ermitteln:

Dim ws As Worksheet
Set ws = ActiveSheet

With ws.Sort
    ' Sortiercode hier einfügen
End With

Diese Methode ist besonders nützlich, wenn Du mehrere Operationen auf dem aktiven Tabellenblatt durchführen möchtest.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie Du ein aktives Tabellenblatt ermitteln und sortieren kannst:

Sub BeispielSortierung()
    Dim aktivesBlatt As Worksheet
    Set aktivesBlatt = ActiveSheet

    aktivesBlatt.Sort.SortFields.Clear
    aktivesBlatt.Sort.SortFields.Add Key:=aktivesBlatt.Range("E5:E500"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

    With aktivesBlatt.Sort
        .SetRange aktivesBlatt.Range("B5:N500")
        .Apply
    End With
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Teste Dein Makro immer mit einer Kopie Deiner Daten, um Datenverlust zu vermeiden.
  • Wenn Du das aktive Tabellenblatt häufig wechseln musst, erwäge, eine Funktion zu erstellen, die das Aktuelle Blatt zurückgibt.

FAQ: Häufige Fragen

1. Wie kann ich das aktive Tabellenblatt in einer Variablen speichern?
Du kannst das aktive Tabellenblatt mit der ActiveSheet-Eigenschaft in einer Variablen speichern, wie folgt:

Dim ws As Worksheet
Set ws = ActiveSheet

2. Was tun, wenn das Makro auf ein nicht aktives Blatt zugreift?
Stelle sicher, dass Du das richtige Blatt aktivierst, bevor Du das Makro ausführst, oder verwende ActiveSheet, um sicherzustellen, dass das aktuelle Blatt verwendet wird.

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