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

Commandbutton Enabled=True/False

Forumthread: Commandbutton Enabled=True/False

Commandbutton Enabled=True/False
26.09.2003 09:19:42
Dennis
Guten morgen zusammen!
Kurze Frage: Habe eine Userform mit Buttons deren Ziel jeweils meine Tabellen der Arbeitsmappen sind (Navigation). Jetzt möchte ich den entsprechenden Button auf Enabled=False setzen, wenn dieser Button gedrückt wird, sodass man nur noch in die anderen Tabellen steuern kann und weiß in welcher man gerade arbeitet. Mein Code sieht so aus:


Private Sub CommandButton1_Click()
Application.Goto ("ziel")
CommandButton1.Enabled = False
End Sub


Klappt. Leider bleibt der Button für immer Disabled! Wie kann ich sowas allgemein für alle Buttons lösen? Eine If-Anweisung?
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Commandbutton Enabled=True/False
26.09.2003 09:32:00
chris
Hallo Dennis

soll beim Neuladen der userform alles wieder auf true gesetzt werden oder wann?


Private Sub UserForm_Activate()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
End Sub


Gruß
Christian
Anzeige
AW: Commandbutton Enabled=True/False
26.09.2003 09:37:05
Dennis
Nene, ganz simpel: Ich möchte einfach das immer derjenige Button nicht anklickbar ist (grau schattiert), der für die jeweilige Arbeitsmappe zuständig ist. Also wenn ich in Tabelle3 meinen Button für "Tabelle2" drücke, soll der Button "Tabelle3" wieder anklickbar und der Button für Tabelle2 solange nicht mehr anklickbar sein, bis ich eine beliebige andere Tabelle auswähle...Ist das so ok ausgedrückt?
Anzeige
AW: Commandbutton Enabled=True/False
26.09.2003 09:54:46
chris
Hi


Private Sub CommandButton1_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton1.Enabled = False
End Sub


schaltet alle ein und den einen aus
So
gehts
wenn du unterschiedliche namen für deiene commands hast anpassen
Gruß
Christian
Anzeige
AW: Commandbutton Enabled=True/False
26.09.2003 10:24:30
Dennis
Neee, will nicht klappen. Bei zwei Buttons läufts, aber bei 3 versagt Dein Tool. Ich denke das liegt daran das die Variable "i" unbestimmt ist in deinem Code. i ist zwar in der for-SChleife, ändert sich aber nie im Wert...Das muss doch irgendwie lösbar sein, mist
AW: Commandbutton Enabled=True/False
26.09.2003 10:33:54
chris
Hallo

das liegt daran das ich einen objektarray eingebaut habe
wenn deine buttons nicht so aufgebaut sind geht es nicht

das funzt nur dann wenn alle namen gleich sind

commanbutton1
commanbutton2
commanbutton3
usw.

geht einwandfrei bei mir :-)


Private Sub CommandButton1_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton1.Enabled = False
End Sub



Private Sub CommandButton2_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton2.Enabled = False
End Sub



Private Sub CommandButton3_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton3.Enabled = False
End Sub



Private Sub CommandButton4_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton4.Enabled = False
End Sub



Private Sub CommandButton5_Click()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
Application.Goto ("ziel")
CommandButton5.Enabled = False
End Sub


gruß
Christian
Anzeige
AW: Commandbutton Enabled=True/False
26.09.2003 10:41:19
Dennis
Danke jetzt klappts! Was komisch ist, ich wußte dass es ein Array ist und habe die Namen dann auch gleichgelassen (Wegen & i), hat aber zuerst nicht funktioniert. Naja, jetzt klappts Du hast mir sehr geholfen DANKE NOCHMAL!
:-) kleine Verbesserung mit function
26.09.2003 11:18:50
chris
Hallo Dennis
um das ganze ein wenig "hübscher" zu gestalten


Private Sub CommandButton1_Click()
weg = einblenden
Application.Goto ("ziel")
CommandButton1.Enabled = False
End Sub



Private Sub CommandButton2_Click()
weg = einblenden
Application.Goto ("ziel")
CommandButton2.Enabled = False
End Sub



Private Sub CommandButton3_Click()
weg = einblenden
Application.Goto ("ziel")
CommandButton3.Enabled = False
End Sub



Private Sub CommandButton4_Click()
weg = einblenden
Application.Goto ("ziel")
CommandButton4.Enabled = False
End Sub



Private Sub CommandButton5_Click()
weg = einblenden
Application.Goto ("ziel")
CommandButton5.Enabled = False
End Sub



Private Function einblenden()
On Error Resume Next
For i = 1 To 50
Me(CStr("commandbutton" & i)).Enabled = True
Next
End Function


gruß
Christian
Anzeige
AW: :-) kleine Verbesserung mit function
26.09.2003 12:01:49
Dennis
Hey Dankeschön!
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Command Buttons in Excel VBA: Enabled True/False


Schritt-für-Schritt-Anleitung

Um die Enabled-Eigenschaft von Command Buttons in einer Userform zu steuern, kannst Du folgenden VBA-Code verwenden. Dieser sorgt dafür, dass der jeweilige Button, der gedrückt wird, deaktiviert wird, während alle anderen Buttons aktiviert bleiben.

  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Füge eine Userform hinzu und platziere mehrere Command Buttons darauf.
  3. Verwende den folgenden Code für jeden Command Button:
Private Sub CommandButton1_Click()
    On Error Resume Next
    For i = 1 To 50
        Me(CStr("CommandButton" & i)).Enabled = True
    Next
    Application.Goto ("ziel") ' Hier den entsprechenden Zielbereich anpassen
    CommandButton1.Enabled = False
End Sub
  1. Wiederhole diesen Code für andere Command Buttons (z. B. CommandButton2, CommandButton3 usw.), indem Du den Button-Namen entsprechend anpasst.

Häufige Fehler und Lösungen

  • Button bleibt dauerhaft deaktiviert: Achte darauf, dass Du die Enabled-Eigenschaft für alle Buttons beim Laden der Userform zurücksetzt. Füge dazu den folgenden Code in das UserForm_Activate-Ereignis ein:
Private Sub UserForm_Activate()
    On Error Resume Next
    For i = 1 To 50
        Me(CStr("CommandButton" & i)).Enabled = True
    Next
End Sub
  • Unbestimmte Variable: Stelle sicher, dass die Schleifenvariable i korrekt definiert ist und dass die Button-Namen im richtigen Format vorliegen (z. B. CommandButton1, CommandButton2 usw.).

Alternative Methoden

Eine alternative Methode zur Steuerung der Enabled-Eigenschaft ist die Verwendung einer benutzerdefinierten Funktion. Hier ein Beispiel:

Private Function SetButtonsEnabled(value As Boolean)
    On Error Resume Next
    For i = 1 To 50
        Me(CStr("CommandButton" & i)).Enabled = value
    Next
End Function

Private Sub CommandButton1_Click()
    SetButtonsEnabled True
    CommandButton1.Enabled = False
    Application.Goto ("ziel")
End Sub

Diese Methode sorgt für eine bessere Lesbarkeit und Wiederverwendbarkeit des Codes.


Praktische Beispiele

Nehmen wir an, Du hast drei Command Buttons: CommandButton1, CommandButton2 und CommandButton3. So könnte der Code aussehen:

Private Sub CommandButton1_Click()
    SetButtonsEnabled True
    CommandButton1.Enabled = False
    Application.Goto ("Sheet2") ' Gehe zu einem anderen Blatt
End Sub

Private Sub CommandButton2_Click()
    SetButtonsEnabled True
    CommandButton2.Enabled = False
    Application.Goto ("Sheet3")
End Sub

Private Sub CommandButton3_Click()
    SetButtonsEnabled True
    CommandButton3.Enabled = False
    Application.Goto ("Sheet4")
End Sub

Tipps für Profis

  1. Verwende ein Array: Wenn Du viele Buttons hast, kann es effizienter sein, sie in einem Array zu speichern und darauf zuzugreifen.

  2. Fehlerbehandlung optimieren: Verwende spezifische Fehlerbehandlungsroutinen, anstatt On Error Resume Next, um potenzielle Fehler besser zu identifizieren.

  3. Benutzerfreundliche Beschriftungen: Achte darauf, dass die Buttons klar beschriftet sind, damit die Benutzer die Navigation leicht verstehen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass alle Buttons bei jedem Aktivieren der Userform wieder aktiviert werden?
Verwende den UserForm_Activate-Ereignis, um die Enabled-Eigenschaft aller Buttons auf True zu setzen.

2. Was passiert, wenn die Button-Namen nicht übereinstimmen?
Wenn die Button-Namen nicht im erwarteten Format (z.B. CommandButton1, CommandButton2) sind, wird der Code nicht funktionieren. Achte darauf, die Namen konsistent zu halten.

3. Kann ich die Enabled-Eigenschaft auch dynamisch ändern?
Ja, Du kannst die Enabled-Eigenschaft basierend auf bestimmten Bedingungen oder Benutzeraktionen in Deinem VBA-Code anpassen.

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