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

VBA - Ereignis beim Klicken eines Tabellenblattes

Forumthread: VBA - Ereignis beim Klicken eines Tabellenblattes

VBA - Ereignis beim Klicken eines Tabellenblattes
30.05.2007 22:29:20
Christian
Hi,
ich habe ein Problem mit Excel und VBA. Ich will eigentlich nur verhindern, daß ein Beutzer das Tabellenblatt wechsel kann. Ich kenne mich im VBA so gut wie nicht aus, aber die Ereignisse, die man dafür abfragen muß habe ich herausgefunden. Leider treten diese nie ein. Mein Makro sieht wie folgt aus:
/* Tritt überhaupt nie ein

Private Sub Worksheet_Activate(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
MsgBox ("ciao")
End Sub


/* Tritt nur ein, wenn auf einem Blatt etwas geändert wurde. Der Aufruf soll aber verhindert werden.


Private Sub Workbook_SheetChange(ByVal Sh As Object, _
ByVal Source As Range)
' runs when a sheet is changed
MsgBox Sh.Name
If Sh.Name = "Tabelle2" Then
Worksheets("Tabelle1").Activate
End If
End Sub


Prinzipiell will ich nur ein zweites Blatt haben, das Daten aus dem ersten Blatt übersichtlicher darstellt. Der Benutzer soll das zweite Blatt drucken können, jedoch nicht aufrufen können (technisch bedingt, da Excel von außen angesteuert wird und der Benutzer beim Beenden der Anwenung nicht in diesem Blatt stehen darf). Das Drucken würde ich dann wieder mit einem Makro versuchen.
Kann mir jemand weiterhelfen, oder bin ich sowieso auf dem Holzfällerweg?
mfg
Christian

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Ereignis beim Klicken eines Tabellenblat
30.05.2007 22:37:00
Uduuh
Hallo,

....und der Benutzer beim Beenden der Anwenung nicht in diesem Blatt stehen darf


warum nicht?
Wenn immer das erste Blatt beim Öffnen aktiv sein soll in DieseArbeitsmappe:


Private Sub Workbook_Open()
Sheets(1).Select
End Sub


Gruß aus’m Pott
Udo

Anzeige
AW: VBA - Ereignis beim Klicken eines Tabellenblat
30.05.2007 22:43:00
Christian
Hi,
danke für die schnelle Antwort. Leider ist es so, daß die Mappe von einer Java-Anwendung geschlossen wird. Vorher liest diese aber noch die Daten aus und sichert diese auf dem Host. Wenn beim Betätigen der Sichern-Taste der Java-Anwendung der Benutzer im falschen Blatt steht, dann bricht die Anwendung ab (Formatierungen gehen schief usw., ganz abgesehen davon daß die Daten ganz andere sind).
Auch ein Einblenden und Ausblenden zum Drucken erscheint hier schwer, da die Exceltabelle auch mit allen möglichen Protected-Attibuten (wenn das so heißt) versehen ist, sodaß beim Ein- und Ausblenden ständig die Makros abbrechen (Objekt nicht verfügbar, Eigenschaften dürfen nicht geändert werden etc.)
Deshalb habe ich gedacht, diese Lösung wäre vielleicht die einfachste.
mfg
Christian

Anzeige
AW: VBA - Ereignis beim Klicken eines Tabellenblattes
30.05.2007 22:42:00
Jens
Hallo Christian
Schreibe in das zu druckende Blatt (welches nicht aufgerufen werden darf):

Private Sub Worksheet_Activate()
Sheets(1).Activate
End Sub


Jedesmal, wenn man nun in das Blatt wechseln möchte, wird automatisch das andere Blatt zurückgewechselt.
Hoffe, das hilft?
Gruß aus dem Sauerland
Jens

Anzeige
AW: VBA - Ereignis beim Klicken eines Tabellenblattes
30.05.2007 22:46:00
Christian
Hi,
danke, jetzt geht es. Das ist ja jetzt wirklich einfach!!
Nochmal danke an alle die sich bemüht haben.
mfg
Christian
Grüße in den Pott
;
Anzeige
Anzeige

Infobox / Tutorial

VBA für Ereignisse beim Klicken eines Tabellenblattes


Schritt-für-Schritt-Anleitung

Um das Wechseln zwischen Tabellenblättern in Excel zu verhindern und stattdessen immer zu einem bestimmten Blatt zurückzukehren, kannst Du folgendes VBA-Makro verwenden:

  1. Öffne den Visual Basic Editor (Alt + F11).

  2. Wähle das Tabellenblatt aus, das Du schützen möchtest.

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_Activate()
       Sheets(1).Activate
    End Sub
  4. Schließe den Editor und speichere die Arbeitsmappe als Makro-aktivierte Datei (.xlsm).

Jetzt wird jedes Mal, wenn ein Benutzer versucht, das geschützte Blatt zu aktivieren, automatisch das erste Blatt ausgewählt.


Häufige Fehler und Lösungen

  • Fehler: Das Makro wird nicht ausgeführt.

    • Stelle sicher, dass die Makros in Deinen Excel-Einstellungen aktiviert sind.
  • Fehler: Der Benutzer kann das Blatt trotzdem wechseln.

    • Überprüfe, ob das Makro im richtigen Blattcode eingefügt wurde.
  • Fehler: Fehlermeldungen beim Drucken.

    • Achte darauf, dass das Drucken von geschützten Blättern korrekt eingerichtet ist. Es kann hilfreich sein, die Blätter vor dem Drucken temporär auszublenden.

Alternative Methoden

Falls VBA nicht die gewünschte Lösung bietet, gibt es auch alternative Ansätze:

  1. Blatt schützen: Du kannst das Blatt schützen, sodass Benutzer keine Änderungen vornehmen können. Klicke dazu mit der rechten Maustaste auf das Blatt, wähle "Blatt schützen" und setze die entsprechenden Optionen.

  2. Benutzerformulare: Erstelle ein Benutzerformular, über das der Benutzer nur bestimmte Aktionen durchführen kann. Dies erfordert jedoch mehr Programmieraufwand.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von VBA zur Kontrolle des Zugriffs auf bestimmte Blätter:

  • Beispiel für das automatische Zurückkehren:

    Private Sub Worksheet_Activate()
       Sheets("Hauptblatt").Activate
    End Sub
  • Beispiel für das Verhindern von Änderungen:

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
       If Sh.Name = "Datenblatt" Then
           Application.EnableEvents = False
           Sheets("Hauptblatt").Activate
           Application.EnableEvents = True
       End If
    End Sub

Diese Beispiele zeigen, wie VBA flexibel eingesetzt werden kann, um das Benutzerverhalten in Excel zu steuern.


Tipps für Profis

  • Nutze Error Handling: Implementiere Fehlerbehandlungsroutinen, um unerwartete Fehler während der Ausführung zu vermeiden.

  • Testen mit verschiedenen Excel-Versionen: Überprüfe, ob Deine VBA-Codes mit verschiedenen Excel-Versionen (z.B. Excel 2016, 2019, oder Microsoft 365) funktionieren.

  • Dokumentation: Halte Deinen Code gut dokumentiert, damit Du oder andere Benutzer später nachvollziehen können, was jeder Teil des Codes macht.


FAQ: Häufige Fragen

1. Kann ich verhindern, dass Benutzer das Blatt sehen? Ja, Du kannst das Blatt ausblenden und die Sichtbarkeit auf "sehr verborgen" setzen. So bleibt es für Benutzer unsichtbar.

2. Was passiert, wenn ich die Datei ohne Makros speichere? Wenn Du die Datei ohne Makros speicherst, gehen alle VBA-Codes verloren, und die Funktionalität wird nicht mehr gegeben sein.

3. Wie kann ich den Code anpassen, um mehrere Blätter zu schützen? Du kannst das Worksheet_Activate-Ereignis so anpassen, dass es mehrere Blätter berücksichtigt, indem Du eine If-Bedingung hinzufügst, die die gewünschten Blätter prüft.

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