Hi Eric,
ich hatte das eigentlich eindeutig geschrieben und auch noch eine Erläuterung hinzugesetzt. Ich kann es aber gerne noch einmal wiederholen:
1. im UserForm läuft der Code nicht, weil man dort kein Steuerelement als CheckBox deklarieren kann. Deshalb wird ein Kompilierungsfehler ausgegeben.
2. im Codemodul des Tabellenblattes läuft der Code, weil man auch ein Tabellenblatt mit "Me" ansprechen kann, wenn der Code z.B. einem ActiveX-Steuerelement oder auch einem Ereignis des Tabellenblattes zugewiesen ist.
3. in einem allgemeinen Modul funktioniert er nicht, weil es dort kein "Me" gibt, auf das er sich beziehen kann. Das hatte ich aber auch nicht behauptet
Wenn bei dir mit dem Code
ActiveSheet.CheckBoxes.Count
die falsche Anzahl ausgegeben wird, dann verwendest du ActiveX-Steuerelemente. Der Fragesteller verwendet jedoch Formular-Steuerelemente. Formular-Steuerelemente kann man direkt mit dem Typ ansprechen, also CheckBoxes, und es werden dann auch nur diese Elemente gezählt, gleichgültig ob noch andere Formularsteuerelemente (Schalter, Listenfeld, Kombinationsfeld usw.) vorhanden sind.
ActiveX-Steuerelemente dagegen werden anders angesprochen, z.B. mit OLEObjects:
ActiveSheet.OLEObjects.Count
wobei man damit ActiveX-Steuerelemente nur allgemein ansprechen kann, es würden also CheckBoxen, CommandButton usw. ebenfalls mit gezählt. In dem Fall müsste man zuerst in einer Schleife den Typ abfragen und dabei entsprechend zählen.
Bis später,
Karin