Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1824to1828
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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."
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?

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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige