Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: letzte aktive Tabelle merken

letzte aktive Tabelle merken
17.08.2006 18:17:51
Wolfgang
Hallo,
gibt es eine Möglichkeit, dass Excel sich das zuletzt aktive Tabellenblatt merkt, zwischenzeitlich einen x-beliebigen Code ausführt, der zu einer anderen Tabelle führt, um dann wieder zum Tabellenblatt, welches vor Ausführen des Codes aktiv war, zurückzukehren? - Wäre für jede Hilfestellung sehr dankbar.
Gruß - Wolfgang
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 18:29:13
Heiko
Hallo Wolfgang,
ja z.B. so:

Sub Beispiel()
Dim strStartBlatt As String
' Blatt aus dem gestartet wurde merken
strStartBlatt = ActiveSheet.Name
' Nun irgendwas tun.
ActiveWorkbook.Worksheets("Tabelle2").Activate
Range("A1") = "Test 1234 "
ActiveWorkbook.Worksheets("Tabelle3").Activate
Range("A1") = "Test 5678 "
' Und nun zurück dahin wo man hergekommen ist
ActiveWorkbook.Worksheets(strStartBlatt).Activate
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 18:38:28
Wolfgang
Hallo Heiko,
herzlichen Dank für die schnelle Rückmeldung; ich werde Deinen Code morgen direkt (habe die Datei auf meinem "Dienstrechner") umsetzen und testen. Nehme aber an, dass er funktionieren wird. Daher nochmals recht herzlichen Dank!!! - Sollte noch eine Frage hierzu sein, werde ich mich erneut melden.
Gruß - Wolfgang
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 18:48:08
Heide_Tr
hallo Wolfgang,
vielleicht ist es einen Gedanken wert, eine Dateieigenschaft einzurichten?
ActiveWorkbook.CustomDocumentProperties.Add Name:="Letztes Tabellenblatt", _
LinkToContent:=False, Type:=msoPropertyTypeNumber, Value:=0
Du würdest immer, wenn's gebraucht wird, das aktive Tabellenblatt hineinschreiben:
ActiveWorkbook.CustomDocumentProperties("Letztes Tabellenblatt").Value = _
ActiveSheet.Index
Dann hast Du die Information auch dann noch, wenn die Datei geschlossen wird.
viele Grüße. Heide
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 19:18:04
Wolfgang
Hallo Heide,
auch Dir recht herzlichen Dank für die schnelle Rückmeldung; Wenn ich Deinen Code richtig verstehe, wird der erste Teil in "Diese Arbeitsmappe" kopiert und der zweite Teil in das jeweilige Tabellenblatt? - Wäre Dir für eine kurze Rückmeldung dankbar, da ich nicht weiß, wo ansonsten genau der Code hineinzukopieren ist.
Danke und Gruß
Wolfgang
Anzeige
AW: letzte aktive Tabelle merken
18.08.2006 06:56:43
Heide_Tr
hallo Wolfgang,
den ersten Teil läßt Du nur ein einziges Mal laufen, damit er die Dateieigenschaft anlegen kann. (später zu sehen über Datei / Eigenschaften / Anpassen)
Wann Du diese Dateieigenschaft mit dem aktuellen Wert versorgst liegt an Deinen Bedürfnissen.
Soll es beim Verlassen (Wechsel) des Workbooks geschehen, gehört der Code in "Diese Arbeitsmappe" - "Workbook_Deactivate()".
Soll es beim Wechsel eines bestimmten Tabellenblattes geschehen, gehört er in das Tabellenblatt - "Worksheet_Deactivate()".
Soll es immer beim Wechsel eines Tabellenblattes geschehen, gehört er in "Diese Arbeitsmappe" - "Workbook_SheetChange"
Gestern hast Du geschrieben "zwischenzeitlich einen x-beliebigen Code ausführt" und ich denke, dass genau vor diesen Code das Schreiben der Dateieigenschaft gehört.
Wenn Du am Ende zum letzten Tabellenblatt zurückspringen willst - auslesen der Dateieigenschaft über: Worksheets(ActiveWorkbook.CustomDocumentProperties("Letztes Tabellenblatt").Value).Activate - musst Du auch wieder entscheiden, wo das steht.
Direkt hinter Deinem "x-beliebigen" Code, beim Aktivieren der Datei (Workbook_Activate()) oder ...
Diese Überlegungen sind aber unabhängig davon, wo und wie Du Dir das letzte Tabellenblatt merkst (also ob in einer Dateieigenschaft oder in einer "normalen" Variablen, oder ...).
Eine Dateieigenschaft hätte vor allem den Vorteil über die Laufzeit des Programms hinaus (also auch nach dem Schließen der Datei) noch erhalten zu bleiben.
viele Grüße. Heide
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 19:58:04
Erich
Hallo Wolfgang,
wenn Du das Blatt nur wissen musst, so lange die Mappe geöffnet ist, gehts auch so:
Sub Beispiel2()
Dim wksStart As Worksheet
Set wksStart = ActiveSheet          ' Startblatt merken
' Nun irgendwas tun.
Worksheets("Tabelle2").Activate
Range("A1") = "Test 1234 "
Worksheets("Tabelle3").Activate
Range("A1") = wksStart.Range("A1")  ' z. B. Wert aus Startblatt holen
wksStart.Activate                   ' Startblatt wieder aktivieren
End Sub
Bei den Bearbeitungsschritten in der Mitte kannst so auch leicht auf Werte usw. des Startblatts zugreifen.
Zum Vorschlag von Heide:
Die beiden ersten Codezeilen müssen nur ein einziges Mal ausgeführt werden.
Das kannst Du auch per Hand machen (Datei - Eigenschaften - Anpassen).
Die beiden anderen Codezeilen kommen in Dein Makro - da, wo Du Dir das gerade aktive Blatt merken willst.
Statt der Nummer (Index) des Blatts wäre es eventuell angebracht,
den Namen des Startblatts in die Properties zu schreiben.
Dann stören Blattsorts oder -verschiebungen nicht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 20:32:57
Erich
Hallo Wolfgang,
mit dem Tabnamen in den Eigenschaften ginge das so:
Sub InitEigenschaft()
'                                         einmalig Dateieigenschaft einrichten:
ActiveWorkbook.CustomDocumentProperties.Add Name:="GemerktesBlatt", _
LinkToContent:=False, Type:=msoPropertyTypeString, Value:=""
End Sub
Sub DeinMakro()
' irgend etwas tun
' irgend etwas tun
' irgend etwas tun
'                                   im Code da, wo das aktive Blatt gemerkt werden soll:
ActiveWorkbook.CustomDocumentProperties("GemerktesBlatt").Value = _
ActiveSheet.Name
' irgend etwas tun
' irgend etwas tun
' irgend etwas tun
'                        im Code da, wo das gemerkte Blatt wieder aktiviert werden soll:
Worksheets(ActiveWorkbook.CustomDocumentProperties("GemerktesBlatt").Value).Activate
' irgend etwas tun
' irgend etwas tun
' irgend etwas tun
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: letzte aktive Tabelle merken
17.08.2006 22:05:33
Wolfgang
Hallo Erich,
ich freue mich sehr über Deine Erläuterungen und Hinweise. Beide Codes werde ich direkt morgen umsetzen und versuchen. Durch Deine Erläuterungen sind mir nun einige Dinge klarer geworden. Herzlichen Danke dafür und weiterhin alles Gute.
Gruß - Wolfgang
AW: Danke für Deine Rückmeldung! (oT)
17.08.2006 22:14:02
Erich
AW: letzte aktive Tabelle merken
17.08.2006 23:05:09
Josef
Hallo Wolfgang!
Wenn man auf "Select" und "Activate" verzichtet und sauber referenziert, dann braucht man das aktive Blatt gar nicht verlassen!
Gruß Sepp

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Letzte aktive Tabelle merken in Excel VBA


Schritt-für-Schritt-Anleitung

Um das letzte aktive Tabellenblatt in Excel mit VBA zu speichern und später wieder auszuwählen, kannst Du folgende Schritte ausführen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul hinzufügen: Rechtsklicke auf "VBAProject (DeineDatei.xlsx)" und wähle Einfügen > Modul.

  3. Code einfügen: Füge den folgenden Code in das Modul ein:

    Sub Beispiel()
       Dim strStartBlatt As String
       ' Aktuelles Tabellenblatt speichern
       strStartBlatt = ActiveSheet.Name
       ' Irgendwas tun
       ActiveWorkbook.Worksheets("Tabelle2").Activate
       Range("A1") = "Test 1234 "
       ActiveWorkbook.Worksheets("Tabelle3").Activate
       Range("A1") = "Test 5678 "
       ' Zurück zum ursprünglichen Tabellenblatt
       ActiveWorkbook.Worksheets(strStartBlatt).Activate
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die Funktionalität zu testen.


Häufige Fehler und Lösungen

  • Fehler: „Zielblatt nicht gefunden“
    Lösung: Überprüfe, ob die angegebenen Blattnamen in Deinem Code korrekt sind und existieren.

  • Fehler: „Objekt nicht gefunden“
    Lösung: Stelle sicher, dass Du das richtige Tabellenblatt in der Worksheets-Sammlung referenzierst.

  • Fehler: „Aktives Tabellenblatt kann nicht ermittelt werden“
    Lösung: Achte darauf, dass die Excel-Datei nicht schreibgeschützt ist und Du das aktive Tabellenblatt korrekt zuweist.


Alternative Methoden

Eine alternative Möglichkeit, das aktive Tabellenblatt zu speichern, ist die Verwendung von Dateieigenschaften. Hier ein Beispiel:

  1. Dateieigenschaft einrichten:

    ActiveWorkbook.CustomDocumentProperties.Add Name:="Letztes Tabellenblatt", _
    LinkToContent:=False, Type:=msoPropertyTypeString, Value:=""
  2. Aktuelles Blatt speichern:

    ActiveWorkbook.CustomDocumentProperties("Letztes Tabellenblatt").Value = ActiveSheet.Name
  3. Blatt wieder aktivieren:

    Worksheets(ActiveWorkbook.CustomDocumentProperties("Letztes Tabellenblatt").Value).Activate

Diese Methode ermöglicht es Dir, das aktive Tabellenblatt auch nach dem Schließen der Datei zu speichern.


Praktische Beispiele

Hier sind einige nützliche Beispiele, die Dir helfen, das aktive Tabellenblatt effizient zu verwalten:

  1. Aktives Tabellenblatt als Variable speichern:

    Sub Beispiel2()
       Dim wksStart As Worksheet
       Set wksStart = ActiveSheet          ' Startblatt merken
       ' Irgendwas tun
       Worksheets("Tabelle2").Activate
       Range("A1") = "Test 1234 "
       wksStart.Activate                   ' Startblatt wieder aktivieren
    End Sub
  2. Letztes Tabellenblatt auswählen:

    Sub LetztesBlattAuswählen()
       Dim letztesBlatt As String
       letztesBlatt = ActiveWorkbook.CustomDocumentProperties("Letztes Tabellenblatt").Value
       Worksheets(letztesBlatt).Activate
    End Sub

Tipps für Profis

  • Vermeide die Verwendung von Select und Activate, um die Leistung zu verbessern. Referenziere stattdessen direkt die Objekte.
  • Du kannst das aktives Tabellenblatt auch in einer globalen Variablen speichern, wenn Du mehrere Makros hast, die darauf zugreifen müssen.
  • Überlege, ob Du die Dateieigenschaften verwenden möchtest, um Informationen über das letzte aktive Tabellenblatt zu speichern, so bleibt diese Information auch nach dem Schließen der Datei erhalten.

FAQ: Häufige Fragen

1. Wie kann ich das aktive Tabellenblatt ermitteln, ohne es zu aktivieren?
Du kannst das aktive Tabellenblatt als Variable speichern, wie im Beispiel oben gezeigt, und dann darauf zugreifen, ohne es zu aktivieren.

2. Was passiert, wenn ich das Tabellenblatt umbenenne?
Wenn Du den Namen des Tabellenblatts änderst, musst Du sicherstellen, dass Du die neuen Namen im Code aktualisierst, um Fehler zu vermeiden.

3. Kann ich mehrere Tabellenblätter gleichzeitig speichern?
Ja, Du kannst ein Array verwenden, um mehrere Blätter zu speichern, und dann durch das Array iterieren, um sie bei Bedarf zu aktivieren.

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