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

Buttons über Schleife ansprechen

Forumthread: Buttons über Schleife ansprechen

Buttons über Schleife ansprechen
14.02.2005 10:28:50
Rainer
Hallo
möchte Buttons in einem Excel-Sheet über Schleife abfragen. Folgendes Makro funktioniert nicht, da Excel das Objekt/Objektklasse Controls nicht findet. ("

Sub oder Funktion nicht definiert")

Sub enable()
Dim i As Byte
For i = 1 To 5
Controls("cmdX" & i).Enabled = False
Next i
End Sub

Wie mach ich das denn richtig? Danke und Grüße
Anzeige
AW: Buttons über Schleife ansprechen
Heiko
Hallo Rainer,
hier ein Beispiel für Checkboxen.

Private Sub CommandButton7_Click()
Dim i As Integer
For i = 1 To 4
ActiveSheet.OLEObjects("CheckBox" & CStr(i)).Object.Value = False
Next i
End Sub

Müßtest du dir für CommandButton´s anpassen.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Buttons über Schleife ansprechen
Rainer
Danke erstmal. Folgendes Makro funktioniert. Allerdings werden hiermit immer alle CommandButtons angesprochen.
Weist du, ob man die Buttons bzw. Checkboxen mit Namen ansprechen kann?

Private Sub enable3()
Dim i As Integer
For i = 1 To 4
ActiveSheet.OLEObjects("CommandButton" & CStr(i)).Object.Enabled = True
Next i
End Sub

Gruß Rainer

Anzeige
AW: Buttons über Schleife ansprechen
Heiko
Hallo Rainer,
was meinst du mit Namen, mit dieser Zeile
ActiveSheet.OLEObjects("CommandButton" & CStr(i)).Object.Enabled = True
sprichst du den CommandButton namentlich an, also das was du in (Name) eingetragen hast.
Und da deine Schleife von 1 bis 4 geht werden dann natürlich auch alle 4 Buttons angesprochen, das ist doch der Sinn der Schleife oder ?
Gruß Heiko
Anzeige
AW: Buttons über Schleife ansprechen
Rainer
Hallo Heiko
Stell dir vor, ich nenne meine Buttons Horst1 - Horst4. Dann ist es nicht möglich diese über folgendes Makro anzusprechen.
Sub enable3()
Dim i As Integer
For i = 1 To 4
ActiveSheet.OLEObjects("Horst" & CStr(i)).Object.Enabled = True
Next i
Der Ausdruck in "" bezieht sich ja nur auf den Objekttyp CommandButton. Oder geht das doch irgendwie?
Anzeige
AW: Buttons über Schleife ansprechen
Heiko
Hallo Rainer,
das läuft bei mir ohne Probleme (Excel 2002), macht meine 4 Testbuttons mit dem Namen Horst1 bis 4 schwarz

Private Sub CommandButton20_Click()
Dim i As Integer
For i = 1 To 4
ActiveSheet.OLEObjects("Horst" & CStr(i)).Object.BackColor = 1
Next i
End Sub

Hast du das denn schon versucht ?
Gruß Heiko
Anzeige
AW: Buttons über Schleife ansprechen
Rainer
Hallo Heiko
Hast Du den Namen Horst auch über das Eigenschaftsfenster zugewiesen (Name) oder per Makro?
Gruß Rainer
AW: Buttons über Schleife ansprechen
Heiko
Hallo Rainer,
über das Eigenschaftsfenster, siehe hier.
Userbild
Gruß Heiko
Anzeige
AW: Buttons über Schleife ansprechen
Rainer
Vielen Dank für deine nützlichen Tipps. Werde jetzt mal suchen warum es bei mit nicht funktioniert. Vielleicht hast du ja noch eine Idee. So sieht mein Sheet aus.
https://www.herber.de/bbs/user/18045.ppt
Und hier das Makro

Sub farbe()
Sheets(2).OLEObjects("Horst5").Object.BackColor = 1
End Sub

Gruß und Danke
Anzeige
AW: Buttons über Schleife ansprechen
Heiko
Hallo Rainer,
da bin ich mit meinem Latein am Ende.
Als Ideen vielleicht noch :
Gibt es denn eine Fehlermeldung oder läuft der Code durch und es tut sich nur nichts.
Ist das wirklich Sheets(2), schon mal mit ActiveSheet oder Sheets("Tabelle2") versucht.
Wenn das alles nicht hilft, liegt es vielleicht an Version 8.0.
Denn bei mir läuft das so auf EXCEl 2003 und zuhaus auf EXCEL 2000 auch.
Gruß Heiko
Anzeige
AW: Buttons über Schleife ansprechen
Rainer
Vielen Dank. Werd mich die nächsten Tage mal schlau machen.
Gruß Rainer
;
Anzeige
Anzeige

Infobox / Tutorial

Buttons in Excel über Schleifen ansprechen


Schritt-für-Schritt-Anleitung

Um Buttons in Excel über eine Schleife anzusprechen, kannst du folgende Schritte ausführen:

  1. Öffne dein Excel-Dokument und wechsle in den Visual Basic for Applications (VBA) Editor, indem du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinDokumentname)" und wähle "Einfügen" > "Modul".

  3. Kopiere und füge den folgenden Code ein:

    Sub enableButtons()
       Dim i As Integer
       For i = 1 To 4
           ActiveSheet.OLEObjects("Horst" & CStr(i)).Object.Enabled = True
       Next i
    End Sub
  4. Ändere die Namen der Buttons: Stelle sicher, dass die Buttons in deinem Arbeitsblatt von "Horst1" bis "Horst4" benannt sind.

  5. Führe das Makro aus: Du kannst das Makro über das Menü oder mit F5 im VBA-Editor ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Sub oder Funktion nicht definiert"

    • Stelle sicher, dass du das Makro in einem Modul und nicht in einem anderen Bereich des VBA-Editors eingefügt hast.
  • Fehler: Buttons werden nicht gefunden

    • Überprüfe die Namen der Buttons, die du in dein Arbeitsblatt eingefügt hast. Diese müssen exakt mit den Namen im Code übereinstimmen.
  • Keine Aktion beim Ausführen des Codes

    • Stelle sicher, dass du das richtige Arbeitsblatt ansprichst. Verwende ActiveSheet oder benenne es explizit mit Sheets("TabelleName").

Alternative Methoden

Wenn du auf Probleme stößt oder eine andere Herangehensweise ausprobieren möchtest, kannst du auch die folgende Methode verwenden:

Sub disableButtons()
    Dim btn As OLEObject
    For Each btn In ActiveSheet.OLEObjects
        If TypeOf btn.Object Is MSForms.CommandButton Then
            btn.Object.Enabled = False
        End If
    Next btn
End Sub

Diese Methode deaktiviert alle CommandButtons auf dem aktiven Arbeitsblatt.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir bei der Arbeit mit Buttons in Excel helfen können:

  1. Buttons aktivieren:

    Sub enableButtons()
       Dim i As Integer
       For i = 1 To 4
           ActiveSheet.OLEObjects("Button" & CStr(i)).Object.Enabled = True
       Next i
    End Sub
  2. Buttons einfärben:

    Sub colorButtons()
       Dim i As Integer
       For i = 1 To 4
           ActiveSheet.OLEObjects("Button" & CStr(i)).Object.BackColor = RGB(255, 0, 0) ' Rot
       Next i
    End Sub
  3. Checkboxen deaktivieren:

    Sub disableCheckboxes()
       Dim i As Integer
       For i = 1 To 4
           ActiveSheet.OLEObjects("CheckBox" & CStr(i)).Object.Value = False
       Next i
    End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Teste deinen Code schrittweise: Nutze Haltepunkte im VBA-Editor, um deinen Code zu debuggen.
  • Benutze klare und beschreibende Namen für deine Buttons, um die Lesbarkeit des Codes zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Buttons korrekt benannt sind? Überprüfe das Eigenschaftsfenster der Buttons, um den Namen festzulegen. Klicke mit der rechten Maustaste auf den Button und wähle "Eigenschaften".

2. Warum funktioniert mein Makro nicht auf einem anderen Computer? Stelle sicher, dass die Excel-Version kompatibel ist und dass alle benötigten Komponenten (z.B. ActiveX-Steuerelemente) vorhanden sind.

3. Kann ich auch andere Steuerelemente wie Dropdowns oder Listenfelder ansprechen? Ja, die Prinzipien sind ähnlich. Du musst jedoch den Typ des Steuerelements anpassen und sicherstellen, dass du die richtigen Eigenschaften verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige