OptionButton

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: OptionButton
von: Alexander
Geschrieben am: 20.08.2015 18:28:36

Guten Tag,
da ich mich mit Beispieldateien und Rekorderaufzeichnungen über Wasser halte bin ich mal wieder an meine Grenzen gestossen.
Ich möchte eigentlich nur zwei OptionButton ansprechen um bestimmte Spalten ein oder auszublenden.
Die OptionButten befinden sich in einer UserForm.
Die eigentlichen Funktionen werden über CommandButton aus der Exceltabelle angesprochen.
Ich hoffe es war einigermassen verständlich.
Das nachfolgende Beispiel funktioniert ganz gut, nur die OptionButton werden nicht angesprochen und bringen die Fehlermeldung „Laufzeitfehler 424: Objekt erforderlich“
Ich habe halt noch nie mit diesen Optionen gearbeitet daher komme ich auch nicht weiter.

Sub Pendenzen_mit_PQM()
'
' Pendenzen_mit_PQM Makro
' Gesamtliste
'
' Tastenkombination: Strg+Umschalt+G
'
    ActiveSheet.Unprotect ("MSGGU")
    Columns("A:AF").Select
    Selection.EntireColumn.Hidden = False
    ActiveSheet.Range("$A$5:$AE$1650").AutoFilter Field:=2
    ActiveSheet.Range("$A$5:$AE$1650").AutoFilter Field:=4
    ActiveWorkbook.Worksheets("Pendenzen + PQM").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Pendenzen + PQM").AutoFilter.Sort.SortFields.Add _
        Key:=Range("A5:A1650"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Pendenzen + PQM").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    If OptionButton2.Value = False Then
        ActiveSheet.Range("$A$5:$AE$1650").AutoFilter Field:=2
        Columns("D:G").Select
        Selection.EntireColumn.Hidden = False
    ElseIf OptionButton1.Value = False Then
        ActiveSheet.Range("$A$5:$AE$1650").AutoFilter Field:=2
        Columns("E:F").Select
        Selection.EntireColumn.Hidden = True
    End If
    
    Columns("A:A").Select
    Selection.EntireColumn.Hidden = True
    Columns("AF:AF").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.EntireColumn.Hidden = True
    Range("G1").Value = "Pendenzen mit PQM"
           
    Range("T2:T5").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -4.99893185216834E-02
        .PatternTintAndShade = 0
    End With
    
    Range("H2").Select
    ActiveSheet.Protect "MSGGU", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
End Sub
Vielen Dank schon einmal im Voraus für Eure Hilfe
Alexander
Ps. Eine möglichst einfache Lösung wäre mir recht.

Bild

Betrifft: AW: OptionButton
von: Daniel
Geschrieben am: 20.08.2015 18:39:19
Hi
wenn sich die Optionbuttons in einer userform befinden und der Code in einem allgemeinen Modul (dh dort wo auch der Recorder seine aufzeichnungen hinschreibt), dann musst du VBA auch mitteilen, wo sich die Optionbuttons befinden, nämlich in der Userform :

if Userform1.Optionbutton2.Value = False then
nur wenn du den Code im Modul der userform selbst schreibst (bspw weil du ihn direkt einem Commandbutton der Userform zugeordnet hast) darfst du die Angabe der Useform weglassen, denn dann geht VBA automatisch davon aus, dass wenn du nichts angibst, die Userform meinst in der sich der Code befindet.
Gruß Daniel

Bild

Betrifft: AW: OptionButton
von: Alexander
Geschrieben am: 21.08.2015 11:57:24
Vielen Dank !!
Manche Dinge sind doch einfacher als man denkt.
Leider hängt dann aber meistens noch etwas dran.
Gut der Code wird nun akzeptiert. Leider merken sich die OptionButton noch nicht welcher ausgewählt worden ist.
Wie muss ist das nun noch bewerkstelligen.
Ich denke damit sollte die Aufgabe gelöst sein.
Lässt es sich in den Button Eigenschaften eventuell definieren.
Herzlichen Dank noch mal im Voraus.
Alex

Bild

Betrifft: AW: OptionButton
von: Daniel
Geschrieben am: 21.08.2015 12:17:18
Hi
was meinst du mit "merken" ???
wenn die Userform gestartet wird, haben die Buttons den Wert, welchen du ihnen bei der Erstellung im VBA-Editor gegeben hast.
dh wenn beim Öffnen der Userform immer schon ein bestimmter Optionbutton ausgewählt sein soll, musst du im VBA-Edior in der Eigenschaftsliste des Buttons für die Eigenschaft "Value" den Wert TRUE einstellen
wenn du willst, dass sich die Optionbuttons ihre letze Einstellung des Anwenders merken musst du sie mit einer Ausgabezelle verknüpfen.
Das machst du, in dem du die Adresse der Ausgabezelle in die Eigenschaft "ControlSource" des Optionbuttons einträgst.
da wird dann automatisch der Buttonzustand mit WAHR oder FALSCH eingetragen und beim Öffnen der Userform wird dann dieser Wert auch gleich so eingestellt.
Das wird dann auch beim Speichern der Datei mit gespeichert.
Gruß Daniel

Bild

Betrifft: AW: OptionButton
von: Alexander
Geschrieben am: 21.08.2015 13:11:05
Hallo Daniel,
das mit ControlSource hatte ich mir schon gedacht, nur was für eine Ausgabezelle ?
Du hast ja gesehen, das durch die nachfolgende Funktion Spalten ein und ausgeblendet werden.
Leider verstehe ich nicht auf was für eine Zelle ich mich beziehen soll um den Buttonzustand zu speichern.
Gruss Alexander

Bild

Betrifft: AW: OptionButton
von: Daniel
Geschrieben am: 21.08.2015 13:20:47
Hi
ControlSource ist die Ausgabezelle
in die Zelle, die du dort angibst, schreibt Excel automatisch den Wert des jeweiligen Steuerelements.
beim Öffnen der Userform wird dann aus dieser Zelle der Wert ausgelesen und in die .value-Eigenschaft des betroffenen Steuerelements geschrieben.
Gruß Daniel

Bild

Betrifft: AW: OptionButton
von: Alexander
Geschrieben am: 21.08.2015 13:48:01
Hallo Daniel,
Also ich habe jetzt eine x beliebige Zelle „Tabelle1!A1“ für den Button 1 und für Button 2 „Tabelle1!A2“ genommen.
Bis jetzt funktioniert das ganze einwandfrei.
Sind die Zellen in der Tabelle den eigentlich weiterhin zu verwenden oder werden diese durch die Button Einstellungen belegt und zum Speichern dieser überschrieben.
Falls diese nicht überschrieben werden, dann verstehe ich das Ganze mit der Ausgabezelle nicht wirklich. Doch Hauptsache das Tool macht was es soll.
Nochmals vielen Dank
Gruss Alexander

Bild

Betrifft: AW: OptionButton
von: Daniel
Geschrieben am: 21.08.2015 15:39:22
Hi
naja, in den Zellen steht mit WAHR oder FALSCH der zustand der Optionbuttons.
diese Zellen solltest du dann nicht für was anderes nutzen.
das macht aber nichts, Excel hat genügend Zellen, auf einem Blatt sogar mehr als eigentlich zählen kann ;-).
du kannst diese Zellen natürlich überschreiben, aber Excel versucht dann, den Wert den du in die Zelle schreibst, an den Optionbutton zu übertragen.
Man kann das nutzen, um auf diese weise die Optionbuttoneinstellungen zu ändern ohne auf den Button klicken zu müssen oder in die VBA-Programmierung einzugreifen, aber man muss dann selber aufpassen, dass kein Blödsinn rauskommt.
Gruß Daniel

Bild

Betrifft: AW: OptionButton
von: Alexander
Geschrieben am: 21.08.2015 13:05:03
Vielen Dank !!
Manche Dinge sind doch einfacher als man denkt.
Leider hängt dann aber meistens noch etwas dran.
Gut der Code wird nun akzeptiert. Leider merken sich die OptionButton noch nicht welcher ausgewählt worden ist.
Wie muss ist das nun noch bewerkstelligen.
Ich denke damit sollte die Aufgabe gelöst sein.
Lässt es sich in den Button Eigenschaften eventuell definieren.
Herzlichen Dank noch mal im Voraus.
Alex

 Bild

Beiträge aus den Excel-Beispielen zum Thema "OptionButton"