Clever-Excel-Forum

Normale Version: OptionsButton leeren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excelgemeinde und -helfer,

ich benötige Hilfe bei einem Formular, das ich versenden will. Es ist eigentlich fertig und ich möchte nun die vielen OptionButton leeren und ein leeres Formular versenden, (d.h. ohne Markierung).

Natürlich kann ich alle OptionsButton manuell leeren, aber das ist sehr mühselig.

Mit VBA bin ich nicht besonders geübt und ein Aufzeichnungsversuch hat nicht funktioniert.

Deshalb hier meine Bitte um Hilfe oder Tipps, wie ich die Optionsbutton leeren kann.

Schon jetzt vielen Dank an alle Leser und Helfer.
Hallo Michael,

versuchs mal so

Code:
Private Sub CommandButton1_Click()
   Dim ctlOption As Control
  
   For Each ctlOption In Me.Controls
      If TypeName(ctlOption) = "OptionButton" Then ctlOption = False
   Next ctlOption

End Sub
Hallo Stefan,

vielen Dank für deine schnelle Hilfe.

Ich habe deinen Code eingebaut, aber es gibt folgende Fehlermeldung.

Fehler beim Kompilieren:
Methode oder Datenobjekt nicht gefunden!

Dabei wurde .Controls blau hinterlegt.

Nun bin ich leider nicht die VBA-Leuchte, sodass ich mit dieser Fehlermeldung nichts anfangen kann. Kannst du nochmal helfen?

Viele Grüße

Michael
Hallo Michael,

Da Du von Formularen schreibst, ging Stefan von einer Userform aus.
Du meinst aber eine Tabelle, welche Du als Formular nutzt, und dort sind die Optinbuttons.

Da gibt es wieder zwei Arten von Optionbuttons. In unten stehendem Code sind beide Möglichkeiten berücksichtigt (siehe Kommentare im Code).

Code:
Sub options_leeren()

'##########################################################
'Optionbutton aus Formularsteuerelementen in Tabelle
Dim oShape As Shape
   For Each oShape In Me.Shapes
      If InStr(oShape.Name, "Option Button") Then oShape.OLEFormat.Object.Value = -4146
   Next


'##########################################################
'Optionbutton aus ActiveX Steueerelementeb in Tabelle
Dim oObjekt As OLEObject
   For Each oObjekt In Me.OLEObjects
      If InStr(oObjekt.Name, "OptionButton") Then oObjekt.Object.Value = False
   Next
  
End Sub
Hallo Atilla,

vielen Dank für deinen Hinweis. Da hast du völlig recht. Ich habe mich missverständlich ausgedrückt und tatsächlich selbst ein Formular entwickelt, wie du vermutetest.

Jetzt werde ich mich deines Codes annehmen und ihn einsetzen. Wahrscheinlich benötige ich einige Zeit dafür, da ich mich mit Codes nicht so gut auskenne und mich noch etwas schwer tue mit dem Anpassen.

Vielen Dank erst einmal.

Viele Grüße

Michael
Hallo Atilla,

vielen Dank noch einmal für deine Hilfe.

Nun habe ich es hinbekommen.

Mein zusätzlicher Fehler war, dass ich einige OptionsButton gruppiert hatte. Damit ging es nicht, aber nachdem ich die Gruppierungen aufgehoben habe, funktioniert es.

Vielen Dank und entschuldige bitte meine missverständliche Beschreibung in der ersten Anfrage.

Viele Grüße

Michael Arriens