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

Userform-Buttons ein-ausblenden

Forumthread: Userform-Buttons ein-ausblenden

Userform-Buttons ein-ausblenden
28.02.2016 16:28:35
Helmut

Hallo Helfer :-)
ich komme einfach nicht weiter-trotz vieler Versuche...
Problem:
1 Userform mit 20 CommandButton
5 Blätter in der Datei
jeweils 4 Buttons in der UF sind pro Blatt mit Makro bestückt
Userform immer sichtbar
Wunsch:
ich möchte bei Blattwechsel nur die Buttons aktiv, die auf dieses Blatt
zugreifen,die andern Buttons inaktiv.
zB.: Blatt 1 aktiv, Button 1-4 aktiv, Blatt 2 aktiv, Button 5-8 aktiv usw...
Wer kann Hilfestellung geben?
Gruß Helmut

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform-Buttons ein-ausblenden
28.02.2016 16:40:13
Hajo_Zi
Hallo Helmut,
beim Start der Userform, ist es schon gelöst.
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf Deine Tabelle, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt nur in dieser Tabelle.
Option Explicit
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim ObCb As Object
For Each ObCb In UserForm1.Controls
If TypeName(ObCb) = "CommandButton" Then
If ObCb.Tag = ActiveSheet.Name Then
ObCb.Visible = True
Else
ObCb.Visible = False
End If
End If
Next ObCb
End Sub
Es wurde Extra keine Datei verlinkt, da die Lösung selber an die Bedingungen angepasst werden sollte.
Ich bin dann raus, da Lösung erstellt.

Anzeige
Hajo,danke-aber da tut sich nichts....
28.02.2016 17:28:50
Helmut
Hallo,
zB.: hier: If ObCb.Tag = ActiveSheet.Name Then
wie kommt der Sheet.Name in den ObCb.Tag ???
und wieso ist das beim Start der UF gelöst?
Gruß Helmut

AW: Hajo,danke-aber da tut sich nichts....
28.02.2016 18:32:08
Daniel
HI
du musst manuell beim Erstellen der Userform für jeden Commandbutton den Tabellenblattnamen des Blattes, bei dem der Button aktiv sein soll, in die Eigenschaft "Tag" eintragen. Das machst du in der Eigenschaftsliste.
Gruß Daniel

Anzeige
AW: ...auch an HaJo
28.02.2016 17:49:34
Oberschlumpf
Hi alle
@HaJo:
Sorry, aber deine "Hilfe" (das Wort kann ich hier nicht ohne "" schreiben) ist für Leute mit nur wenig Excel-Wissen - nicht - hilfreich.
Dreh den Spieß doch mal um und stell dir eine Situation/ein Thema vor, bei dem - DU - fast oder gar keine Ahnung von hast.
Dann stell dir vor, du bittest jemanden, weil du bei dem Thema, bei dem du keine Ahnung hast, um Hilfe.
Dieser jemand zeigt dir einen Code, von dem du vielleicht 2 oder 3 Befehle vielleicht schon mal gesehen, aber längst noch nicht verstanden hast.
Zusätzlich erklärt dieser jemand zwar, wo der Code stehen muss und auch, wie das geht.
Aber - was genau - der Code tut, das erklärt dieser jemand nicht.
Jetzt - HaJo - will ich dich mal sehen, wie du mit sooo einer Hilfe klar kommst, bei einem Thema, in dem du dich fast bis gar nicht auskennst!
@Helmut:
Du wirst nicht daran vorbeikommen, uns mal eine Bsp-Datei mit Bsp-Daten und vor allem auch dem Userform mit all den Button und sonstigen, notwendigen Steuerelementen - per Upload - zu zeigen.
Denn ich bin bei mir sicher (bei den anderen möglichen Antwortern bin ich vielleicht sicher), dass niemand deine Datei nachbauen wird...allein schon wegen 20 Button.
Vielleicht finden wir ja dann eine Lösung. Und vielleicht passt auch der Code von HaJo. Aber ohne Datei weiß ich das auch noch nicht.
Ciao
Thorsten

Anzeige
Datei meiner Meinung....
28.02.2016 18:10:16
Helmut
Hallo,
... nicht notwendig-sorry :-)
Also-egal wie viele Buttons vorhanden sind, wenn ich auf Blatt 1 wechsle,
sollen von den zig-Buttons nur zB. 1-4 sichtbar sein-oder inaktiv.
Wenn ich von Blatt1 auf Blatt3 wechsle, sollen zB. nur Button 9-12 sichtbar sein.
Daher-es sollen nur die vom Blatt abhängigen Buttons aktiv(sichtbar) sein.
Hoffe, es geht ohne Datei ;-)
Gruß Helmut

Anzeige
Nun denn:
28.02.2016 18:58:23
RPP63
Wenn Du keine Datei hochladen willst, Thorsten …
… zeige ich Dir einen Code, der genau in meiner Datei funktioniert:
Private Sub UserForm_Initialize()
Dim BlattIdx As Byte, BtnNo As Byte
BlattIdx = Worksheets(ActiveSheet.Name).Index
For BtnNo = 1 To 20
Me.Controls("CommandButton" & BtnNo).Enabled = False
Next
For BtnNo = (4 * BlattIdx) - 3 To 4 * BlattIdx
Me.Controls("CommandButton" & BtnNo).Enabled = True
Next
End Sub
Gruß Ralf

Anzeige
ergänzend …
28.02.2016 19:17:00
RPP63
… da das UserForm ja nicht-modal ist, vergiss obigen Code und nimm:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim BlattIdx As Byte, BtnNo As Byte
BlattIdx = Worksheets(Sh.Name).Index
For BtnNo = 1 To 20
UserForm1.Controls("CommandButton" & BtnNo).Enabled = False
Next
For BtnNo = (4 * BlattIdx) - 3 To 4 * BlattIdx
UserForm1.Controls("CommandButton" & BtnNo).Enabled = True
Next
End Sub
Gruß Ralf

Anzeige
OK, kleine Beispieldatei...
28.02.2016 19:22:26
Helmut
Hallo,
ich hoffe, dass es jetzt besser verständlich ist :-)
https://www.herber.de/bbs/user/103958.xls
PS: Thorsten ist unschuldig... ;-)
Gruß Helmut

Hallo Helmut;-)
28.02.2016 19:31:10
RPP63
Warum hast Du meine Codes nicht ausprobiert?
Im Eröffnungspost war noch von einem nicht-modalen UF die Rede.
Meine Übungsdatei im Anhang.
https://www.herber.de/bbs/user/103959.xlsm
Gruß Ralf

Anzeige
Herzlichen Dank ;-) den Helfern...
28.02.2016 20:04:21
Helmut
Hallo,
habe den Test von Ralf erst später getestet, die Berechnung war mir etwas
unklar ;-), aber jetzt hab ich ja die Lösung lt.Beispieldatei von Ralf.
Nochmals danke und Gruß
Helmut

Hilfe für dich meiner Meinung...
28.02.2016 22:43:17
Oberschlumpf
...nach nicht wieder erforderlich!
Aber du bist aus meiner ich-will-helfen-Liste raus!
DU schaffst es nicht - MIT DATEI - eine Lösung für dein Problem zu finden, hältst es aber für - nicht erforderlich - erwartest von uns also - OHNE DATEI - eine Lösung?????
Tja Baby, wenn DU zu faul bist, eine qualifizierte Frage zu stellen (so etwas beinhaltet auch Bsp-Dateien), dann hilf dir selbst + alleine!
Schade, dass du trotzdem - qualitativ gute! - Hilfe erhalten hast...

Anzeige
He,was ist los Oberschlumpf?
29.02.2016 08:30:25
Helmut
Hallo,
warum liest Du nicht alle Antworten von mir ?
1. habe ich eine Beispieldatei hochgeladen
2. finde ich, dass meine Beschreibung des Wunsches recht deutlich war.
...bei Blattwechsel sollen von den 20 Buttons jeweils nur 4 aktiv sein-
nämlich jene, die per Makro auf diesem Blatt etwas machen.
Meine Frau, die keine ! Ahnung von Excel und VBA hat, hat das verstanden :-)
Also, komm wieder runter, ob Du mir helfen willst oder nicht,
ist Deine Sache, ich kann damit leben.
Gruß Helmut

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Userform-Buttons in Excel ein- und ausblenden


Schritt-für-Schritt-Anleitung

  1. VBA Editor öffnen: Drücke Alt + F11, um den VBA Editor zu starten.

  2. Userform auswählen: Doppelklicke auf Deine Datei und wähle das entsprechende Tabellenblatt aus.

  3. Code einfügen: Kopiere den folgenden Code in das rechte Fenster des VBA Editors:

    Option Explicit
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        Dim ObCb As Object
        For Each ObCb In UserForm1.Controls
            If TypeName(ObCb) = "CommandButton" Then
                If ObCb.Tag = ActiveSheet.Name Then
                    ObCb.Visible = True
                Else
                    ObCb.Visible = False
                End If
            End If
        Next ObCb
    End Sub
  4. Tag-Eigenschaft setzen: Stelle sicher, dass die Tag-Eigenschaft jedes CommandButtons den Namen des jeweiligen Blatts hat, auf das der Button zugreifen soll.

  5. VBA Editor schließen: Speichere die Änderungen und schließe den Editor.


Häufige Fehler und Lösungen

  • Buttons blenden sich nicht aus: Überprüfe, ob die Tag-Eigenschaft der Buttons korrekt gesetzt ist. Jeder Button muss den Namen des entsprechenden Blatts haben.
  • Code funktioniert nicht bei Userform-Initialisierung: Stelle sicher, dass Du den Code im richtigen Modul (z. B. Workbook) eingefügt hast und die Userform nicht modal ist.

Alternative Methoden

Eine alternative Methode zur Steuerung der Sichtbarkeit von Buttons ist die Verwendung der Enabled-Eigenschaft anstelle von Visible. Hier ist ein Beispielcode:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim BlattIdx As Byte, BtnNo As Byte
    BlattIdx = Worksheets(Sh.Name).Index
    For BtnNo = 1 To 20
        UserForm1.Controls("CommandButton" & BtnNo).Enabled = False
    Next
    For BtnNo = (4 * BlattIdx) - 3 To 4 * BlattIdx
        UserForm1.Controls("CommandButton" & BtnNo).Enabled = True
    Next
End Sub

Diese Methode sorgt dafür, dass die Buttons deaktiviert sind, anstatt sie auszublenden.


Praktische Beispiele

Angenommen, Du hast eine Userform mit 20 Buttons, die jeweils den Zugriff auf unterschiedliche Blätter ermöglichen. Wenn Du auf "Blatt 1" wechselst, sollen nur die Buttons 1-4 aktiv sein. Verwende dafür den oben genannten Code, um die Buttons basierend auf dem aktiven Blatt zu steuern.

  1. Blätter und Buttons benennen: Setze die Tag-Eigenschaft der Buttons wie folgt:

    • Button1.Tag = "Blatt1"
    • Button2.Tag = "Blatt1"
    • Button3.Tag = "Blatt1"
    • Button4.Tag = "Blatt1"
    • Button5.Tag = "Blatt2"
    • usw.
  2. Code anpassen: Der Code wird automatisch die Sichtbarkeit der Buttons basierend auf dem aktiven Blatt steuern.


Tipps für Profis

  • Verwende Debug.Print: Füge Debug.Print-Anweisungen in deinen Code ein, um zu verfolgen, welche Buttons sichtbar oder unsichtbar gemacht werden. Dies hilft bei der Fehlersuche.
  • Kombiniere mit anderen Funktionen: Du kannst die Sichtbarkeit von Buttons auch mit anderen Funktionen in VBA kombinieren, um komplexere Benutzeroberflächen zu erstellen.

FAQ: Häufige Fragen

1. Wie kann ich die Sichtbarkeit der Buttons beim Start der Userform setzen?
Füge im UserForm_Initialize()-Ereignis ähnlichen Code hinzu, um die Sichtbarkeit der Buttons beim Start festzulegen.

2. Was ist der Unterschied zwischen Visible und Enabled?
Visible steuert die Sichtbarkeit des Buttons, während Enabled bestimmt, ob der Button angeklickt werden kann oder nicht.

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