Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema OptionButton
BildScreenshot zu OptionButton OptionButton-Seite mit Beispielarbeitsmappe aufrufen

OptionButton per VBA Code/Funtion zuweisen


Betrifft: OptionButton per VBA Code/Funtion zuweisen von: Marieke
Geschrieben am: 19.02.2019 07:25:48

Hallo zusammen,

ich möchte eine Checkliste erstellen. Zum erstellen eines Neuen Eintrags habe ich ein Makro geschrieben, das auch für jeden Eintrag die OptionButtons "Ja" und "Nein" erstellt. Nun sollen gewisse Unterpunkte ausgeblendet werden, wenn bei einem Eintrag "Nein" angeklickt wird. Das habe ich für den ersten Eintrag über das "Click"-Ereignis gemacht. Allerdings werden die weiteren Einträge ja alle durch ein Makro erstellet und enthalten somit noch keinen Code... Nun meine Frage:

Gibt es eine Möglichkeit einen OptionButton per VBA zu erstellen und diesem auch per VBA einen Code oder zumidest eine Fuktion (sie sollen ja im Prinzip immer das gleiche tun) zuzuweisen?

Ich hoffe ihr könnt mir helfen.
Liebe Grüße Marieke

  

Betrifft: Was ist ein CodeModule?/Lösungsansatz von: Marieke
Geschrieben am: 19.02.2019 11:28:37

Moin nochmal,

ich hab nochmal weiter probiert aber bekomme es einfach nicht hin.
Hier mein vereinfachter Code und ein Lösungsansatz:

Sub OBerstellen()
    
    Dim s As Integer
    Dim OB As Object
    Dim lngStartLine As Long
    
    Run "zeilenzaehlen"          'gibt mir lastrow
    
    With Range("K" & lastrow)
        For s = 1 To 2
        With .Offset(1, s - 1)
            Set OB = ActiveSheet.OLEObjects.Add( _
                ClassType:="Forms.OptionButton.1", _
                Link:=False, _
                DisplayAsIcon:=False, _
                Left:=.Left, _
                Top:=.Top, _
                Width:=.Width, _
                Height:=.Height)
            
            OB.Object.GroupName = "Gruppe" & lastrow
            OB.LinkedCell = .Address(0, 0)
            If s = 1 Then
                OB.Object.Caption = "Ja"
                .Value = True
                With CodeModule                                         'was muss hier...
                    lngStartLine = .CreateEventProc("Click", OB.Object.Name) + 1

                    .InsertLines lngStartLine, _
                    " msgbox ""Ja"""
                End With
            Else
                OB.Object.Caption = "Nein"
                .Value = False  
                With CodeModule                                          '... und hier hin?
                    lngStartLine = .CreateEventProc("Click", OB.Object.Name) + 1

                    .InsertLines lngStartLine, _
                    " msgbox ""Nein"""
                End With
            End If
        End With
        Next s
    End With
    
End Sub
Mein Problem ist glaube ich, dass ich nicht verstehe, was ein CodeModule ist/macht bzw. wie man es erstellt oder wie auch immer man es benutzt. Ich werde aus der Definition von Microsoft einfach nicht schlau...

LG Marieke


  

Betrifft: Was ist ein CodeModule?/Lösungsansatz von: Marieke
Geschrieben am: 19.02.2019 11:42:36

Moin nochmal,

ich hab nochmal weiter probiert aber bekomme es einfach nicht hin.
Hier mein vereinfachter Code und ein Lösungsansatz:

Sub OBerstellen()
    
    Dim s As Integer
    Dim OB As Object
    Dim lngStartLine As Long
    
    Run "zeilenzaehlen"          'gibt mir lastrow
    
    With Range("K" & lastrow)
        For s = 1 To 2
        With .Offset(1, s - 1)
            Set OB = ActiveSheet.OLEObjects.Add( _
                ClassType:="Forms.OptionButton.1", _
                Link:=False, _
                DisplayAsIcon:=False, _
                Left:=.Left, _
                Top:=.Top, _
                Width:=.Width, _
                Height:=.Height)
            
            OB.Object.GroupName = "Gruppe" & lastrow
            OB.LinkedCell = .Address(0, 0)
            If s = 1 Then
                OB.Object.Caption = "Ja"
                .Value = True
                With CodeModule                                         'was muss hier...
                    lngStartLine = .CreateEventProc("Click", OB.Object.Name) + 1

                    .InsertLines lngStartLine, _
                    " msgbox ""Ja"""
                End With
            Else
                OB.Object.Caption = "Nein"
                .Value = False  
                With CodeModule                                          '... und hier hin?
                    lngStartLine = .CreateEventProc("Click", OB.Object.Name) + 1

                    .InsertLines lngStartLine, _
                    " msgbox ""Nein"""
                End With
            End If
        End With
        Next s
    End With
    
End Sub
Mein Problem ist glaube ich, dass ich nicht verstehe, was ein CodeModule ist/macht bzw. wie man es erstellt oder wie auch immer man es benutzt. Ich werde aus der Definition von Microsoft einfach nicht schlau...

LG Marieke


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Daniel
Geschrieben am: 19.02.2019 11:53:42

Hi

wenn ich mal davon ausgehe, dass die Optionbuttons bestimmten Zeilen zugeordnet sind, ist es einfacher, anstelle von Optionbuttons über das BeforeDoubleClick-Event bestimmte Zellen als Optionbutton zu verwenden.
dh du legst für das Blatt das BeforeDoubleClick-Eventmakro an.
dieses wird immer ausgelöst, wenn du einen Doppelklick auf eine Zelle ausführst.
über die Variable Target kannst du dann ermitteln, welche Zelle angeklickt wurde und darüber dann die entsprechenden Aktionen ausführen lassen.

dann reicht dir ein Makro aus und du musst dich nicht damit rumärgern, Code per Code erzeugen zu müssen, sondern kannst alles direkt programmieren.

Gruß Daniel


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Marieke
Geschrieben am: 19.02.2019 12:01:39

Klingt nach einer guten Alternative. Ich probiere das mal aus und melde mich nochmal, falls ich Fragen hab.

Vielen Dank für den Tipp! :)


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Marieke
Geschrieben am: 19.02.2019 12:01:40

Klingt nach einer guten Alternative. Ich probiere das mal aus und melde mich nochmal, falls ich Fragen hab.

Vielen Dank für den Tipp! :)


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Marieke
Geschrieben am: 19.02.2019 14:34:10

Folgendes Problem:
Wenn ich einen Doppelklick auf einen OptionButton mache, erkennt er die Zelle dahinter nicht, obwohl sie mit dem Button verlinkt ist.
Kannst du mir da weiter helfen?

LG Marieke


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Daniel
Geschrieben am: 19.02.2019 16:14:41

kein Optionbutton.
die Zelle selbst ist der Optionbutton.


  

Betrifft: AW: OptionButton per VBA Code/Funtion zuweisen von: Marieke
Geschrieben am: 21.02.2019 12:25:36

Ah ok jetzt hab ich verstanden, was du meinst. Es funktioniert super. Vielen Dank!


Beiträge aus dem Excel-Forum zum Thema "OptionButton per VBA Code/Funtion zuweisen"