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

Wenn Tabellenblatt angeklickt, dann ...

Forumthread: Wenn Tabellenblatt angeklickt, dann ...

Wenn Tabellenblatt angeklickt, dann ...
30.09.2016 13:35:55
Jockel
Hallo
habe folgendes Problem:
habe ein Mappe, da wird beim Start ein bestimmtes Tabellenblatt selektiert und eine Symbolleiste geladen, die ich selber zusammengestellt habe.
Private Sub Workbook_Open()
Worksheets("Test").Select
Symbolleiste_1_ein
End Sub
.
Das funktioniert soweit.
Nun habe ich ein zweites Tabellenblatt, bei dem eine andere Symbolleiste geladen werden soll. (Wenn das Tabellenblatt angeklickt wurde)
Da dieses Tabellenblatt aber vom User gelöscht werden kann und durch ein neues (mit gleichem Name) ersetzt werden kann, wäre , wenn ich den Code aufs Tabellenblatt schreiben würde:
Private Sub Worksheet_Activate()
Symbolleiste_2_ein
End Sub

mein Code ja auch verschwunden. (da durch ein neues ersetzt)
Wo im Workbook kann ich denn unter welchem Ereignis die Abfrage machen, welches Tabellenblatt angeklickt wurde und welche Symbolleiste zu laden ist.
Ich darf mein abfragen also nicht in die Tabellenblätter schreiben, sondern muss ihn vermutlich zentral in ein Modul, aber unter welchen Ereignis ?
Ich hoffe, das war verständlich
Gruß
Jockel
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Tabellenblatt angeklickt, dann ...
30.09.2016 14:22:40
Rudi
Hallo,
Wo im Workbook kann ich denn unter welchem Ereignis die Abfrage machen, welches Tabellenblatt angeklickt wurde
in DieseArbeitsmappe.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub
Gruß
Rudi
AW: Wenn Tabellenblatt angeklickt, dann ...
30.09.2016 16:25:41
Jockel
Hallo Rudi,
ich glaube, das hatte ich schon versucht. Wollte in dem Ereignis anfragen, ob ein bestimmtes Tabellenblatt selektiert wurde, so:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
if Worksheets("Test").select = true then
msgbox "Test wurde angeklickt"
end if
End Sub
Das funktioniert nicht. Das Sheet "Test" wird bei jeden Start selektiert, ich lande immer in "Test" und es gibt eine Endlosschleife.
was mach ich falsch ?
Danke
Jockel
Anzeige
kein Wunder...
30.09.2016 17:43:35
Michael
Hi,
denn Du selektierst ja auch das "Test".
Frage mal ab nach
Sub test()
If ActiveSheet.Name = "Test" Then MsgBox "Test"
End Sub
Schöne Grüße,
Michael
Danke, perfekt owT
05.10.2016 07:51:28
Jockel
fein, Gruß, owT
05.10.2016 11:18:43
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt-Aktivierung in Excel: Symbolleisten dynamisch laden


Schritt-für-Schritt-Anleitung

Um beim Klick auf ein Tabellenblatt eine bestimmte Symbolleiste zu laden, kannst Du den folgenden VBA-Code verwenden. Dieser Code wird in das Modul "DieseArbeitsmappe" eingefügt und ermöglicht es, verschiedene Aktionen basierend auf dem aktivierten Arbeitsblatt auszuführen.

  1. Öffne die Excel-Datei und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke im Projektfenster auf „DieseArbeitsmappe“.
  3. Füge den folgenden Code ein:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Name = "Test" Then
        Symbolleiste_1_ein
    ElseIf Sh.Name = "AnderesBlatt" Then
        Symbolleiste_2_ein
    End If
End Sub
  1. Ersetze "AnderesBlatt" mit dem Namen des zweiten Tabellenblatts, für das Du eine andere Symbolleiste laden möchtest.
  2. Schließe den VBA-Editor und speichere die Änderungen.

Häufige Fehler und Lösungen

  • Endlosschleife beim Aktivieren eines Arbeitsblatts: Wenn Du Worksheets("Test").Select verwendest, kann dies zu einer Endlosschleife führen. Stattdessen solltest Du If Sh.Name = "Test" verwenden, um das aktivierte Arbeitsblatt zu prüfen.

  • Symbolleisten werden nicht geladen: Stelle sicher, dass die Namen der Arbeitsblätter korrekt und die entsprechenden Symbolleisten-Funktionen (Symbolleiste_1_ein und Symbolleiste_2_ein) richtig definiert sind.


Alternative Methoden

Eine alternative Methode zur Aktivierung von Symbolleisten besteht darin, Excel-Formeln oder Makros zu verwenden, um die Benutzeroberfläche dynamisch anzupassen. Du könntest beispielsweise:

  • Benutzerdefinierte Menüs erstellen, die sich bei der Auswahl von Arbeitsblättern ändern.
  • Formularsteuerelemente nutzen, um die Benutzerinteraktion zu verbessern.

Hierbei ist zu beachten, dass diese Methoden möglicherweise nicht so direkt sind wie die Verwendung von VBA.


Praktische Beispiele

Beispiel 1: Wenn Du ein Arbeitsblatt mit dem Namen "Test" hast und eine Symbolleiste beim Klicken auf dieses Blatt laden möchtest, kannst Du die oben angegebenen Schritte befolgen.

Beispiel 2: Möchtest Du eine spezifische Aktion für ein Arbeitsblatt mit dem Namen "Daten" durchführen, füge eine weitere ElseIf-Bedingung in den Code ein:

ElseIf Sh.Name = "Daten" Then
    Symbolleiste_Daten_ein

Tipps für Profis

  • Debugging: Nutze Debug.Print innerhalb Deiner VBA-Prozeduren, um den Ablauf des Codes zu überwachen und Fehler leichter zu identifizieren.

  • Modularität: Halte Deine Symbolleisten- und Arbeitsblattaktivierungs-Methoden modular, um die Wartung zu erleichtern und Wiederverwendbarkeit zu gewährleisten.

  • Sicherheitskopien: Erstelle regelmäßig Sicherungskopien Deiner Excel-Datei, insbesondere wenn Du mit VBA arbeitest.


FAQ: Häufige Fragen

1. Kann ich mehrere Arbeitsblätter gleichzeitig prüfen?
Ja, Du kannst die Workbook_SheetActivate-Prozedur so erweitern, dass sie mehrere Arbeitsblätter überprüft und entsprechende Aktionen ausführt.

2. Was passiert, wenn ein Arbeitsblatt gelöscht wird?
Wenn ein Arbeitsblatt gelöscht wird, wird der entsprechende Code für dieses Blatt nicht mehr ausgeführt. Du könntest eine Fehlerbehandlung einfügen, um dies zu berücksichtigen.

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