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

Forumthread: Tabellenblatt wechseln verhindern

Tabellenblatt wechseln verhindern
21.04.2021 15:53:23
Raptor
Hallo zusammen,
ich habe eine etwas größere Datei mit gut 100 Tabellenblätter und einem Übersichtsblatt, von wo ich per Buttons in jedes Tabellenblatt komme. Meine Frage wäre jetzt wie ich verhindern kann, dass die Benutzer der Datei unten per Mausklick das Tabellenblatt wechseln (Hintergrund: Bei einigen Blättern habe ich den Code so geschrieben, dass man immer auf die vorherige Seite zurück gelangt. Wenn man jetzt aber unten in ein falsches Tabellenblatt wechselt springt man immer von einem ins andere). Ich hoffe die Situation ist einigermaßen verständlich.
Mit freundlichen Grüßen
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt wechseln verhindern
21.04.2021 16:06:28
max.kaffl@gmx.de
Hallo,
blende die Tabellenreiter aus:
Datei - Optionen - Erweitert - Optionen für diese Arbeitsmappe anzeigen - Häkchen bei "Blattregisterkarten anzeigen" raus.
Gruß
Nepumuk
AW: Tabellenblatt wechseln verhindern
22.04.2021 07:45:39
Raptor
Hallo,
vielen Dank für die Hilfe funktioniert wie gewünscht.
Gruß
Raptor
AW: Tabellenblatt wechseln verhindern
21.04.2021 16:17:17
Daniel
HI
du kannst die in der Datei die Reiter über den Menüpunkt:
Datei - Optionen - Erweitert - Optionen für dieses Arbeitsmappe... - Blattregisterkarten anzeigen
ausblenden (Haken entfernen)

dann kann der Anwender nur noch über deine Buttons zwischen den Tabellenblättern wechseln.
allerdings muss man dann schon über das Blatt selbst sofort erkennen, wo man sich befindet.
die andere alternative wäre folgender Code im Modul "DieseArbeitsmappe"

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Application.EnableEvents = False
Sh.Select
Application.EnableEvents = True
End Sub
dieser bewirkt, dass bei einem Wechsel des Tabellenblatts sofort wieder das alte Tabellenblatt aktiviert wird und man somit das Tabellenblatt nicht gewechselt werden kann.
Wenn dann deine Buttons das Tabellenblatt wechseln wollen, müssen sie in ihrem Code ebenfalls das Application.EnableEvents verwenden:

Application.EnableEvents = False
AnderesTabellenblatt.Select
Application.EnableEvents = True
ansonsten lösen sie auch den Rücksprung aus und der Wechsel funktioniert nicht.
das wäre die Option , wenn die Reiter sichtbar bleiben sollen.
auch kann man hier die Funktionalität über den Button "Entwurfsmodus" in den Entwicklertools einfacherer ein- und ausschalten als die Reiter über die erweitereten Optionen ein- und auszublenden falls man doch mal manuell wechseln will.
Gruß Daniel
Anzeige
AW: Tabellenblatt wechseln verhindern
21.04.2021 19:59:38
onur
Hi Daniel,
Sicher, dass das hier nicht reicht?

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sh.Select
End Sub
Wozu hier alle Events aus- und einschalten?
AW: Tabellenblatt wechseln verhindern
22.04.2021 10:08:52
Daniel
Warum fragst du mich?
probier's doch einfach aus und sag's und uns.
du bist doch selber groß.
Gruß Daniel
Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 13:21:19
onur
Was soll die pampige Antwort?
ICH weiss, dass das überflüssig ist, du offenbar nicht!!!
AW: Tabellenblatt wechseln verhindern
22.04.2021 14:55:26
Daniel
naja, überflüssig finde ich das nicht.
ohne das Application.EnableEvents startet bei mir damit eine Endlosschleife, die c.a. 100x durchlaufen wird, bis Excel aufgibt
In Excel 2010 und Excel 2013 kann man dann normal weiterarbeiten, Excel 2016 hingegen stürzt dann kommentarlos ab
(mit den drei Varianten habe ich getestet)
selbst wenn Excel nicht abstürzt, hundert mal das Blatt zu wechseln ergibt eine spürbare Verzögerung, die störend und unprofessionell wirkt und die sich auf diese Weise einfach vermeiden lässt.
bau dir mal eine Messagebox ein:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Msgbox "Bitte benutze zum Blattwechsel die Buttons und nicht die Reiter!"
Sh.Select
End Sub
und überprüfe dann, ob die EnableEvents wirklich überflüssig sind.
ach nein, das brauchst du ja nicht, du weißt es ja besser.
Gruß Daniel
Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 17:16:16
onur
Sorry, du hast Recht, wie ich festgestellt habe, aber das hättest du du auch vernünftig sagen können!
Was ich nicht verstehe: Warum wird das Event nochmal aufgerufen? Es wird weder das Blatt nochmal deaktiviert noch ein ANDERES Blat angewählt.
Laut Beschreibung:"The SheetDeactivate event occurs when any sheet in the workbook is deactivated, such as when a different sheet in the workbook is activated. To listen this event Workbook_SheetDeactivate procedure is used. This procedure uses one argument Sh that stores the sheet object that is deactivated."
Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 17:30:51
Daniel
och, ich war mindestens genauso vernünftig wie du selbst (auch wenn du das wahrscheinlich anders siehst)
ich wollte dir halt noch mal die Chance geben, nochmal nachzudenken und selber auf die Lösung zu kommen und nicht ich deinen Fehler aufdecken muss.
wenn das Event SheetDeactivate loslegt, ist ja schon das neue Sheet das aktive Sheet.
wenn du dann wieder zum alten Sheet zurückspringst, wird das neue Sheet deaktiviert und daher startet das Eventmakro erneut.
das Event gilt ja für alle Sheets, da es im Modul "DieseArbeitsmappe" steht.
Gruß Daniel
Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 17:58:35
onur
"wenn das Event SheetDeactivate loslegt, ist ja schon das neue Sheet das aktive Sheet" - verstehe ich nicht.
Ich habe einen Haltepunkt in Workbook_SheetActivate gesetzt, der Code kommt aber nie dort an. Wie kann das neue Blatt aktiviert sein, wenn SheetActivate nicht reagiert hat ?
Ich habe mal getestet: Wenn man von Tabelle1 auf Tabelle2 wechselt - beim Ersten Mal ist sh=Tabelle1, beim 2. Mal Tabelle2, dann wieder Tabelle1 usw usw. Wieso wird Tabelle2 Deaktiviert, wenn sie laut dem Event nie aktiviert wurde?

Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 18:17:37
Daniel
HI
zunächst einmal muss man wissen, dass es ein echtes "Deactivate" als eigenständigen Vorgang nicht gibt.
da immer ein Tabellenblatt aktiv sein muss, ist es nicht möglich, ein Tabellenblatt zu deaktivieren.
Man kann immer nur ein neues Blatt aktivieren. (ähnlich wie beim Bundeskanzler, den kann der Bundestag auch nicht abwählen, sondern immer nur einen neuen wählen).
daher gehe ich gehe mal von folgender Reihenfolge der Ereignisse aus
1. Wechsel des Tabellenblatts
2. Ausführen des DeactivateEvents des alten Blattes
3. Ausführen des ActivateEvents des neuen Blattes
wenn du jetzt im Deactivate-Event nochmal das Tabellenblatt wechselst, startet der Prozess sofort erneut, dh, 1. Wechsel des Tabellenblatts, 2. Aufführen des Deactivate-Events.
Die Activate-Events können also nie ausgeführt werden, weil immer vorher ein neues Deactivate-Event dazwischen krätscht.
das ganze hängt also mit der Reihenfolge der Ereignisse und Eventmakros zusammen.
der erste Zyklus wird erst dann weiter ausgeführt, wenn der neue Zyklus erfolgreich beendet ist, was aber nie passiert.
Gruß Daniel
Anzeige
AW: Tabellenblatt wechseln verhindern
22.04.2021 18:25:53
onur
Hi Daniel,
dass ein Blatt deaktiviert werden kann, bevor es "offiziell" aktiviert wurde, ist zwar nicht logisch, aber die Erklärung ist nachvollziehbar.
Danke.
Gruß
Onur
AW: Tabellenblatt wechseln verhindern
22.04.2021 18:42:58
Daniel
was verstehst du unter "offizieller Aktivierung"?
die gibt es meines wissens nicht.
das Blatt wird aktiviert, fertig.
Die Events sind nicht notwendige, nachträgliche Zugaben, die man an dieser stelle vielleicht auch anders hätte gestalten können, z.B. mit diesem Ablauf
1. BeforeDeactivate-Event
2. Wechsel des Tabellenblatts
3. Activate-Event man hätte vielleicht auch nur ein einziges Event daraus machen können, mit beiden Sheets (SH_old, SH_new) als Übergabeparameter.
aber der Ablauf ist halt nun mal so wie er ist und den findet man am besten durch selber ausprobieren raus.
Gruß Daniel
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

Tabellenblatt Wechsel verhindern in Excel


Schritt-für-Schritt-Anleitung

  1. Tabellenreiter ausblenden:

    • Gehe zu Datei > Optionen > Erweitert.
    • Suche den Abschnitt Optionen für diese Arbeitsmappe anzeigen.
    • Entferne das Häkchen bei Blattregisterkarten anzeigen.
    • Dadurch können Benutzer nur noch über die von dir erstellten Buttons zwischen den Tabellenblättern wechseln.
  2. VBA-Code zur Verhinderung des Wechsels:

    • Öffne den VBA-Editor (Alt + F11).
    • Füge den folgenden Code in das Modul DieseArbeitsmappe ein:
      Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
       Application.EnableEvents = False
       Sh.Select
       Application.EnableEvents = True
      End Sub
    • Dieser Code sorgt dafür, dass bei einem Wechsel des Tabellenblatts das aktuelle Blatt sofort wieder aktiviert wird.
  3. Buttons für den Blätterwechsel anpassen:

    • Verwende den Code folgendermaßen in deinen Buttons:
      Application.EnableEvents = False
      AnderesTabellenblatt.Select
      Application.EnableEvents = True
    • So wird der Rücksprung nicht ausgelöst, und der Wechsel funktioniert wie gewünscht.

Häufige Fehler und Lösungen

  • Fehler: Das Wechseln der Blätter funktioniert nicht.

    • Lösung: Stelle sicher, dass der Code für die Buttons korrekt implementiert ist. Vergewissere dich, dass Application.EnableEvents sowohl vor als auch nach dem Blätterwechsel gesetzt ist.
  • Fehler: Excel stürzt ab oder wird langsam.

    • Lösung: Wenn du eine Endlosschleife verursachst, achte darauf, dass Application.EnableEvents ordnungsgemäß verwendet wird, um dies zu verhindern.

Alternative Methoden

  • Benutze den Entwurfsmodus:

    • Du kannst die Sichtbarkeit der Reiter auch über den Entwurfsmodus in den Entwicklertools steuern. So kannst du die Reiter temporär ausblenden, wenn du manuell zwischen den Blättern wechseln möchtest.
  • Shortcut für das Wechseln:

    • Wenn du die Tastenkombinationen für das Wechseln zwischen Arbeitsblättern nutzen möchtest, kannst du die Excel-Shortcuts wie Ctrl + Page Up und Ctrl + Page Down verwenden. Diese helfen dir, schnell zwischen den Blättern zu navigieren.

Praktische Beispiele

  • Excel VBA für Button:
    • Wenn du einen Button in deinem Excel-Blatt hast, um zu einem bestimmten Blatt zu wechseln, könnte der Code folgendermaßen aussehen:
      Sub WechselZuBlatt()
       Application.EnableEvents = False
       Sheets("Zielblatt").Select
       Application.EnableEvents = True
      End Sub
    • Dieser Code sorgt dafür, dass der Wechsel zu einem spezifischen Blatt funktioniert, ohne dass der Benutzer die Reiter verwenden kann.

Tipps für Profis

  • Verwende MsgBox für Hinweise:

    • Füge eine MsgBox hinzu, um Benutzer daran zu erinnern, nur die Buttons für den Blätterwechsel zu verwenden. Beispiel:
      Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
       MsgBox "Bitte benutze zum Blattwechsel die Buttons und nicht die Reiter!"
       Sh.Select
      End Sub
  • Kombination mit Shortcut:

    • Wenn du häufig zwischen Blättern wechseln musst, kombiniere die Buttons mit den Excel-Shortcuts, um die Effizienz zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass Benutzer die Tabellenblätter wechseln?
Du kannst die Blattregisterkarten ausblenden oder VBA verwenden, um den Wechsel zu verhindern.

2. Funktioniert das auch in älteren Excel-Versionen?
Ja, die beschriebenen Methoden funktionieren in den meisten Excel-Versionen, einschließlich Excel 2010, 2013 und 2016.

3. Gibt es eine Tastenkombination, um schnell zwischen Blättern zu wechseln?
Ja, die Tastenkombinationen Ctrl + Page Up und Ctrl + Page Down ermöglichen es dir, zwischen den Arbeitsblättern zu wechseln.

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