Thema Datum  Von Nutzer Rating
Antwort
13.01.2025 15:10:01 Herbert
Solved
13.01.2025 16:57:15 Gast7777
NotSolved
Rot Probleme mit Checkboxen
13.01.2025 20:53:27 xlKing
NotSolved
13.01.2025 21:09:46 xlKing
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
13.01.2025 20:53:27
Views:
29
Rating: Antwort:
  Ja
Thema:
Probleme mit Checkboxen

Hallo Herbert

Nun ja, Ich finde beides hat seine Vor- und Nachteile. Formularsteuerelemente sind einfacher zu handeln, sehen schicker aus und sind stabiler in der Darstellung, mit ActiveX-Steuerelementen kann man dafür etwas mehr anstellen, sofern man sich bei den Standardelementen bewegt sind diese auch auf dem Tabellenblatt verwendbar. Ungewöhnliche ActiveX-Elemente können auf dem Tabellenblatt aber auch mal verzerrt oder gar nicht dargestellt werden. ActiveX-Elemente sind eher für Userforms gedacht. Dort sind sie stabiler können vereinzelt aber trotzdem Fehler erzeugen. Bei den Elementen von Microsoft Forms 2.0 sollten aber keine Probleme auftreten.

Es verwirrt mich auch, dass die Sub-Routine von VBA mit Sub Kontrollkästchen benannt wird, ich die Steuerelemente aber mit CheckBox... ansprechen muss.

Wenn du ein Formularsteuerelement neu einfügst und den Namen nicht sofort änderst hat es grundsätzlich erstmal zwei Namen. Einen deutschen und einen englischen. Du kannst die Checkbox dann mit a = ActiveSheet.CheckBoxes("Check Box 4933").Name oder mit a = ActiveSheet.CheckBoxes("Kontrollkästchen 4933").Name ansprechen. Zurückgegeben wird in jedem Fall der englische Name, da VBA englisch spricht. Sobald du den Namen änderst (entweder in dem Namensfeld links von der Formelleiste oder über den Namensmanager oder z.B. per VBA mit ActiveSheet.CheckBoxes("Kontrollkästchen 4933").Name = "cb4933" ist nur noch der geänderte Name ansprechbar und kann zurückgegeben werden.

Wenn du das obere Makro also um diese drei Zeilen erweiterst und nochmal ausführst kannst du dir im folgenden viel Tipparbeit sparen.

cb.Name = Replace(cb.Name, "Check Box ", "cb")
cb.Name = Replace(cb.Name, "Kontrollkästchen ", "cb")
cb.OnAction = cb.Name & "_Klicken"

Das gesamte Makro sieht dann so aus.

Sub Schaltfläche8_Klicken()
Dim Sh As Worksheet
Dim cb As CheckBox

'Sheets("A_blatt").Activate

Range("a1").Select

For Each cb In ActiveSheet.CheckBoxes

cb.Visible = True
cb.Caption = "K.A."
cb.Name = Replace(cb.Name, "Check Box ", "cb")
cb.Name = Replace(cb.Name, "Kontrollkästchen ", "cb")
cb.OnAction = cb.Name & "_Klicken"

Next cb

End Sub

Im unteren Makro musst du dann natürlich ebenfalls auf die Checkboxes-Auflistung zugreifen und den Namen dort als Text hinterlegen. Dann gehts. Dabei gibt es zwei Möglichkeiten die ich dir hier mal dargestellt habe.

Sub cb4933_Klicken()
a = ActiveSheet.CheckBoxes("cb4933").Name
b = aktivesheet.CheckBoxes("cb4933").Caption
End Sub

Sub cb4934_Klicken()
With ActiveSheet.CheckBoxes("cb4934")
a = .Name
b = .Caption
End With
End Sub

Grundsätzlich gibt es in der VBA-Programmierung viele verschiedene Wege, um ans Ziel zu kommen. Daher gestatte mir die Frage: Was willst du denn eigentlich machen?

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
13.01.2025 15:10:01 Herbert
Solved
13.01.2025 16:57:15 Gast7777
NotSolved
Rot Probleme mit Checkboxen
13.01.2025 20:53:27 xlKing
NotSolved
13.01.2025 21:09:46 xlKing
NotSolved