Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Ausgeblendete Blätter einzeln mittels bestimmten Zelleintrag dauerhaft einblenden
#1
Hallo zusammen,

mein Enkel benötigt Nachhilfe. Themenbezogen will ich einen Fragenkatalog zusammenstellen, mit dem der Junge arbeiten kann. Allerdings soll er nicht gleich alle Themen sehen. Deshalb habe ich die relevanten Blätter über die Blatteigenschaften manuell auf xlSheetVeryHidden gesetzt.

Nun meine Frage, respektive Bitte um VBA-Lösung, wie ich die entsprechenden Tabellenblätter nach einem eingegebenen Schlüsselwort in Zelle A1 (immer auf demselben Arbeitsblatt "Allgemeines", das ständig sichtbar ist), dauerhaft einblenden kann.

Ich habe versucht, dieses mittels Makro-Aufzeichnung darzustellen. Hier mein Versuch (mit Anpassungen):

Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Worksheets("Allgemeines"), Range("A1")) Is Nothing Then
    Exit Sub
        If Worksheets("Allgemeines"),Range("A1").Value = "Thema1" Then Worksheets("Thema1").Visible = True
        End If
End Sub

Alleine schon diese Zeile
Code:
If Worksheets("Allgemeines"),Range("A1").Value = "Thema1" Then Worksheets("Thema1").Visible = True
überfordert mich, denn ich müsste eine Schleife ("Case"?) programmieren, die abfrägt, ob ein Tabellenblatt mit dem zugeordneten Schlüsselwort aus Blatt "Allgemeines" bereits sichtbar ist oder erst eingeblendet werden muss.

Im Übrigen funktioniert der gepostete Code nicht einmal beim angesprochenen Blatt "Thema1".

Insgesamt werden es ca. 20 Arbeitsblätter mit unterschiedlichen Namen (also nicht "Thema1" bis "Thema20" sondern eher "Addieren", "Subtrahieren",  "Multiplizieren", "Dividieren" usw.), sein.

Danke schon mal für eure Hilfe.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antwortento top
#2
Hallo Günter,

(22.02.2020, 23:12)WillWissen schrieb: ... denn ich müsste eine Schleife ("Case"?) programmieren, die abfrägt, ob ein Tabellenblatt mit dem zugeordneten Schlüsselwort aus Blatt "Allgemeines" bereits sichtbar ist oder erst eingeblendet werden muss.
das spielt doch keine Rolle. Wink
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address = "$A$1" Then
If .Value = "Addieren" Then Worksheets("Addieren").Visible = True
If .Value = "Subtrahieren" Then Worksheets("Subtrahieren").Visible = True
If .Value = "Multiplizieren" Then Worksheets("Multiplizieren").Visible = True
If .Value = "Dividieren" Then Worksheets("Dividieren").Visible = True
'usw.
End If
End With
End Sub
Gruß Uwe
[-] Folgende(r) 1 Benutzer sagt Danke an Kuwer für diesen Beitrag:
  • WillWissen
Antwortento top
#3
Hi Uwe,

hab' das Makro gerade auf meine Originaldatei angepasst. Danke. Thumps_up Thumps_up Funktioniert wie erhofft.

Danke für deine Hilfe.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antwortento top
#4
Hallo Günter,

ich bin jetzt nicht sicher, ob ich es richtig verstanden habe. Falls immer nur das aktuell ausgewählte Thema eingeblendet sein soll, würde ich es mit diesem Code lösen:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Treffer As Range
Dim i As Integer, Blatt As Integer

With Target
    If .Address = "$A$1" Then
        Set Treffer = Worksheets(2).Columns(1).Find(What:=Target.Value)
        If Not Treffer Is Nothing Then
            Blatt = Worksheets(2).Cells(Treffer.Row, 2)
            For i = 3 To Worksheets.Count
                Worksheets(i).Visible = False
            Next i
            Worksheets(Blatt).Visible = True
        End If
    End If
End With
End Sub
In Kombination mit einem zusätzlichen Tabellenblatt "Verzeichnis" wie in der Mappe anbei. Das hat den Vorteil, dass auf einfache Weise zusätzliche Themen hinzugefügt werden können, ohne den Code anpassen zu müssen.


Angehängte Dateien
.xlsx   Lernhilfe.xlsx (Größe: 12,49 KB / Downloads: 2)
Schöne Grüße
Berni
[-] Folgende(r) 1 Benutzer sagt Danke an MisterBurns für diesen Beitrag:
  • WillWissen
Antwortento top
#5
Hallo Berni,

(22.02.2020, 23:57)MisterBurns schrieb: ... ich bin jetzt nicht sicher, ob ich es richtig verstanden habe. Falls immer nur das aktuell ausgewählte Thema eingeblendet sein soll, würde ich es mit diesem Code lösen:...

das war (Betonung liegt auf dauerhaft) eindeutig:
Zitat:Nun meine Frage, respektive Bitte um VBA-Lösung, wie ich die entsprechenden Tabellenblätter nach einem eingegebenen Schlüsselwort in Zelle A1 (immer auf demselben Arbeitsblatt "Allgemeines", das ständig sichtbar ist), dauerhaft einblenden kann.

Zu Deiner Lösung sag ich mal nichts.

Gruß Uwe
Antwortento top
#6
Hallo Bernie,

auch dir lieben Dank, dass du mir helfen willst.

Allerdings hat Uwe meinen Lösungswunsch richtig interpretiert: manuell über die Tabelleneigenschaften ausgeblendete Tabellenblätter sollen dauerhaft wieder eingeblendet werden, wenn ein vorher festgelegtes Schlüsselwort im ersten (sichtbaren) Tabellenblatt ("Allgemeines") in A1 eingegeben wird. Ich konnte den Lösungsvorschlag auf mein Original übertragen; er erfüllt genau meinen Wunsch.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste