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

Forumthread: Eigenschaften v. Buttons per Schleife ändern

Eigenschaften v. Buttons per Schleife ändern
12.11.2007 12:56:00
Thomas
Hallo
Ich habe ca. 40 Buttons, bei denen ich per Knopfdruck eine Eigenschaft ändern möchte. Nun möchte ich dies mit Hilfe einer Schleife machen. Die Buttons haben alle einen Namen + laufende Nummer.
z.B. Print1, Print2 usw.
Wie, und vor allem kann man das mit einer Schleife machen, wenn ich Printx.enabled bei allen ändern möchte.
Vielen Dank schon mal im Vorraus.
Gruß Thomas

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:04:19
Rudi
Hallo,
so:

Sub tt()
Dim cmd As OLEObject
For Each cmd In ActiveSheet.OLEObjects
If cmd.Name Like "Print*" Then cmd.Enabled = False
Next
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:22:00
Thomas
Danke mit Enabled funktioniert das. Aber ich muß noch bei einer großen Anzahl von Buttons die Eigenschaft Caption ändern, was aber mit einer Fehlermeldung (Objekt unterstützt diese Eigenschaft oder Methode nicht) abgebrochen wird.
Dim cmd As OLEObject
For Each cmd In ActiveSheet.OLEObjects
If cmd.name Like "Print*" Then cmd.Enabled = False
If cmd.name Like "Aktiv*" Then cmd.Caption = "Aktivieren"
Next
mfg Thomas

Anzeige
AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:29:37
Rudi
Hallo,
cmd.object.caption
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:34:00
Thomas
Danke funktioniert TOP.
Ich hab da mal noch ne andere Frage. Ich möchte am Anfang einer Routine eine Messagebox öffnen mit dem Hinweis "Bitte warten" und diese dann am Schluß automatisch wieder schließen. Hab da bisher noch nichts gefunden. Wie muß ich das machen, oder geht das nicht über die Msgbox?
Thomas

Anzeige
AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:39:56
Rudi
Hallo,
das geht nicht mit einer MsgBox.
Der Code sollte doch in Millisekunden durch sein.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:42:34
Thomas
Ist nicht für diesen Code. Ich habe noch eine andere Routine die eine Menge Daten umschaufelt und die dauert etwas länger.
Gruß Thomas

Anzeige
AW: Eigenschaften v. Buttons per Schleife ändern
12.11.2007 13:11:00
Kawensmann
Hallo,
versuch es mit dieser Schleife:
Dim ct As Control
For Each ct In UserForm1.Controls
If TypeName(ct) = "CommandButton" Then
If Left(ct.Name, 5) = "Print" Then
ct.Enabled = False
End If
End If
Next
Gruß
Kawensmann
;
Anzeige
Anzeige

Infobox / Tutorial

Eigenschaften von Buttons per Schleife ändern


Schritt-für-Schritt-Anleitung

Um die Eigenschaften von Buttons in Excel per Schleife zu ändern, kannst du den folgenden VBA-Code verwenden. Dieser Code geht durch alle OLE-Objekte auf dem aktiven Blatt und ändert die Enabled-Eigenschaft von Buttons, deren Namen mit "Print" beginnen.

Sub tt()
    Dim cmd As OLEObject
    For Each cmd In ActiveSheet.OLEObjects
        If cmd.Name Like "Print*" Then cmd.Enabled = False
    Next
End Sub

Falls du auch die Caption-Eigenschaft ändern möchtest, kannst du den Code wie folgt erweitern:

Dim cmd As OLEObject
For Each cmd In ActiveSheet.OLEObjects
    If cmd.Name Like "Print*" Then cmd.Enabled = False
    If cmd.Name Like "Aktiv*" Then cmd.Object.Caption = "Aktivieren"
Next

Achte darauf, dass du cmd.Object.Caption verwendest, um die Fehlermeldung "Objekt unterstützt diese Eigenschaft oder Methode nicht" zu vermeiden.


Häufige Fehler und Lösungen

  • Fehlermeldung bei der Caption-Änderung: Stelle sicher, dass du cmd.Object.Caption verwendest. Dies ist notwendig, da die Buttons als OLE-Objekte behandelt werden.

  • Schleife funktioniert nicht: Überprüfe, ob die Namen der Buttons richtig formatiert sind und mit dem angegebenen Muster übereinstimmen.

  • Buttons nicht deaktiviert: Stelle sicher, dass sich die Buttons auf dem aktiven Blatt befinden und tatsächlich als OLE-Objekte vorliegen.


Alternative Methoden

Wenn du eine Benutzerform (UserForm) verwendest, kannst du folgende Schleife nutzen, um die Eigenschaften der CommandButtons zu ändern:

Dim ct As Control
For Each ct In UserForm1.Controls
    If TypeName(ct) = "CommandButton" Then
        If Left(ct.Name, 5) = "Print" Then
            ct.Enabled = False
        End If
    End If
Next

Diese Methode funktioniert nur in Kontexten, wo sich die Buttons in einer UserForm befinden.


Praktische Beispiele

Hier sind einige praktische Szenarien, in denen du die cmd schleife nutzen kannst:

  1. Deaktivierung von Buttons bei bestimmten Bedingungen: Du könntest eine Schleife verwenden, um Buttons zu deaktivieren, wenn ein bestimmtes Formularfeld leer ist.

  2. Batch-Änderungen: Wenn du viele Buttons mit ähnlichen Namen hast, kannst du deren Eigenschaften in einem Rutsch ändern, um Zeit zu sparen.


Tipps für Profis

  • Nutze die Like-Anweisung effektiv, um flexiblere Namensmuster zu ermöglichen.
  • Experimentiere mit anderen Eigenschaften von OLE-Objekten, um das Erscheinungsbild und Verhalten deiner Buttons dynamisch zu steuern.
  • Überlege, den Code in eine Funktion zu packen, die du immer wieder verwenden kannst, um die Wartbarkeit deines Codes zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Eigenschaften gleichzeitig ändern?
Du kannst mehrere If-Anweisungen innerhalb der Schleife verwenden, um verschiedene Eigenschaften nacheinander zu ändern.

2. Funktioniert dieser Code in allen Excel-Versionen?
Der gezeigte VBA-Code sollte in den meisten modernen Excel-Versionen funktionieren, die OLE-Objekte unterstützen.

3. Kann ich die Schleife auch in einer Subroutine verwenden, die länger dauert?
Ja, du kannst die Schleife in jeder Subroutine verwenden. Wenn der Code länger dauert, ziehe in Betracht, eine Fortschrittsanzeige zu implementieren, um den Benutzer zu informieren.

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