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

Forumthread: Nach Makro zurückspringen in Tabellenblatt

Nach Makro zurückspringen in Tabellenblatt
02.08.2007 13:15:31
Benny
Hallo zusammen,
ich rufe durch doppelklick in einem Tabellenblatt1 oder 2 oder x eine Form auf welche dann die farbe der zelle ändert.
Dann wird diese Zelle in ein Tabellenblatt3 kopiert. Nach ausführen des Codes bleibt er dann auf Tabellenblatt3 stehen und springt nicht zurück auf das Tabellenblatt auf wessem der Code durch doppelklick ausgeführt wurde.
Wie kann ich es realisieren das er dann wieder auf das blatt springt wo der Code aufgerufen wurde?
Vielen Dank
benny

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Makro zurückspringen in Tabellenblatt
02.08.2007 13:22:00
sergiesam
Hi,
speichert am besten das Blatt in einer Variablen ab:

Sub DeinMakro()
dim rücksprungBlatt as Worksheet
set rücksprungBlatt = ActiveSheet
Dein Code
rücksprungBlatt.Activate
End Sub


lg,
Sam

AW: Nach Makro zurückspringen in Tabellenblatt
02.08.2007 13:28:00
Benny
Super klasse,
vielen Dank. Funktioniert wunderbar!
THX

Anzeige
Wenn Du das richtig programmierst.....
02.08.2007 13:28:00
NoNet
Hallo benny,
weshalb "springt" denn der Cursor überhaupt in das Tabellenblatt3 ?
Ich vermute mal, Du selektierst oder aktivierst in Deinem Makro dieses Blatt ?
Zum Kopieren von Zellwerten ist das überhaupt nicht notwendig, Du kannst z.B. folgendermassen Formeln/Funktionen Werte kopieren, OHNE das Blatt zu wechseln :
Activesheet.Range("A1:B5").Copy Sheets("Tab3").Range("A1")
Oder falls es nur reine Werte (KEine Formeln/Funktionen) sind :
Sheets("Tab3").Range("A1:B5").Value = Activesheet.Range("A1:B5").Value
Somit ersparst Du Dir das "Zurückspringen" !
Falls es aus irgendeinem Grunde doch sein muss, dass das Tabellenblatt aktiviert werden muss, dann kannst Du Dir beim Aufruf des UserForms das Aktuelle Blatt "merken". Füge dazu folgenden Code in das Klassenmodul des Userforms ein :
Dim aktBlatt
Private Sub UserForm_Activate()
    Set aktBlatt = ActiveSheet
End Sub
Private Sub UserForm_Terminate()
    aktBlatt.Select
End Sub
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Nach einem Makro zurückspringen in ein Tabellenblatt


Schritt-für-Schritt-Anleitung

Um nach dem Ausführen eines Makros in Excel zurück zu dem ursprünglichen Tabellenblatt zu springen, kannst du die folgenden Schritte befolgen:

  1. Variable für das aktuelle Blatt erstellen: Speichere das aktive Blatt in einer Variable, bevor du den Code ausführst, der das Blatt wechselt.

    Sub DeinMakro()
       Dim rücksprungBlatt As Worksheet
       Set rücksprungBlatt = ActiveSheet
       ' Dein Code hier
       rücksprungBlatt.Activate
    End Sub
  2. Makro ausführen: Führe dein Makro aus, das die gewünschten Aktionen durchführt, z.B. das Kopieren von Werten in ein anderes Tabellenblatt.

  3. Zurückspringen: Am Ende des Makros kannst du die Activate-Methode verwenden, um zum ursprünglichen Tabellenblatt zurückzukehren.


Häufige Fehler und Lösungen

  • Fehler: Das Makro springt nicht zurück:

    • Stelle sicher, dass du die Variable für das aktive Blatt korrekt gesetzt hast, bevor du das Blatt wechselst.
  • Fehler: "Nur gefilterte Daten können in das aktive Blatt kopiert werden":

    • Überprüfe, ob du versuchst, gefilterte Daten zu kopieren. Verwende gegebenenfalls eine Methode, um nur sichtbare Zellen zu kopieren.

Alternative Methoden

Wenn du die Notwendigkeit vermeiden möchtest, zwischen Tabellenblättern zu wechseln, kannst du folgende Methoden verwenden:

  • Direktes Kopieren ohne Blattwechsel:

    ActiveSheet.Range("A1:B5").Copy Sheets("Tab3").Range("A1")
  • Werte kopieren ohne Formeln:

    Sheets("Tab3").Range("A1:B5").Value = ActiveSheet.Range("A1:B5").Value

Diese Methoden ermöglichen es dir, effizienter zu arbeiten, ohne das Tabellenblatt wechseln zu müssen.


Praktische Beispiele

  1. Beispiel für ein Makro, das zurückspringt:

    Sub BeispielMakro()
       Dim rücksprungBlatt As Worksheet
       Set rücksprungBlatt = ActiveSheet
    
       ' Beispielhafter Code zum Kopieren von Daten
       ActiveSheet.Range("A1:B5").Copy Sheets("Tab3").Range("A1")
    
       ' Zurückspringen zum ursprünglichen Blatt
       rücksprungBlatt.Activate
    End Sub
  2. Beispiel für das Arbeiten mit einem UserForm:

    Dim aktBlatt As Worksheet
    
    Private Sub UserForm_Activate()
       Set aktBlatt = ActiveSheet
    End Sub
    
    Private Sub UserForm_Terminate()
       aktBlatt.Select
    End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Teste dein Makro gründlich, um sicherzustellen, dass es in verschiedenen Szenarien funktioniert, besonders wenn du mit gefilterten Daten arbeitest.
  • Halte deinen Code modular, indem du Funktionen für wiederkehrende Aufgaben schreibst, um die Lesbarkeit und Wartung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ich immer zum richtigen Blatt zurückspringe?
Speichere das aktive Blatt immer in einer Variable, bevor du zu einem anderen Blatt wechselst.

2. Ist es möglich, ohne VBA zwischen Tabellenblättern zu wechseln?
Ja, du kannst manuell zwischen den Blättern wechseln, indem du die entsprechenden Registerkarten in Excel anklickst. VBA bietet jedoch mehr Flexibilität und Automatisierungsmöglichkeiten.

3. Was passiert, wenn ich das aktive Blatt nicht speichere?
Wenn du das aktive Blatt nicht speicherst, wird der Code nicht wissen, zu welchem Blatt zurückgesprungen werden soll, wodurch du auf das falsche Blatt zurückgeführt werden kannst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige