Checkboxen ActiveX erzeugen statt Typ Formularsteuerelement
30.05.2024 12:49:23
Excelfan1
ich benötige bitte eure Hilfe.
Ich habe im Tabellenblatt1 für die Zelle C2 eine Auswahl erstellt, Quelle ist Tabellenblatt2 Tabelle2!$E$3:$E$6 mit dem Namen "Tabelle4". Diese enthält die Werte Brot, Milch, Käse, nichts.
Ferner habe ich eine Tabelle "Option" mit 2 Spalten im Tabellenblatt2 mit Kriterien.
Wird nun in Tabellenblatt1 in der Zelle C2 z.B. Brot ausgewählt wird die Tabelle Option entsprechend gefiltert (Spalte1) und es werden im Tabellenblatt1 so viele Checkboxen vom Typ Formularsterelement erzeugt wie oft der ausgewählte Wert in Tabelle Optionen enthalten ist (bei Brot 5 Checkboxen ). Die erste Checkbox erscheint in Zellen B5, die letzte in Zelle B9.
Ich hätte jetzt gerne, daß Checkboxen vom Typ Activex erstellt werden die auch in den Zellen B5 bis B9 erscheinen.
Ich weiß, daß Checkboxen vom Typ Activex OLEObjects heißen, aber CheckBox einfach durch OLEObjects ersetzen funktioniert nicht.
Es erscheint der Fehler "Laufzeitfehler '438' Objekt unterstützt dies Eigenschaft oder Methode nicht".
Kann mir bitte jemand weiterhelfen
Mein derzeitiger Code lautet
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target = Range("Auswahl") Then
OptionenAnzeigen
End If
End Sub
Private Sub delChkBoxes()
Dim e As CheckBox
For Each e In ActiveSheet.CheckBoxes
e.Delete
Next
End Sub
Private Sub OptionenAnzeigen()
Dim chk As CheckBox
Dim c As Range
Set c = ActiveCell
Call delChkBoxes
Sheets("Tabelle2").ListObjects("Option").Range.AutoFilter Field:=1, Criteria1:=Range("Auswahl").Text
Dim i As Integer
i = Range("Option").SpecialCells(xlCellTypeVisible).Rows.Count
Dim zeile As Integer, spalte As Integer
Dim zelle As Range
spalte = 2: zeile = 4
For i = 1 To Range("Option").SpecialCells(xlCellTypeVisible).Rows.Count
Set zelle = Cells(zeile + i, spalte)
Set chk = ActiveSheet.CheckBoxes.Add(zelle.Left, zelle.Top, 30, zelle.Height)
chk.Text = Range("Option").SpecialCells(xlCellTypeVisible).Cells(i, 2)
Next
c.Select
End Sub
Anzeige