Clever-Excel-Forum

Normale Version: Ausblenden Zeilen inkl. Kontrollkästchen (Formularsteuerelement - nicht ActivX!!)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum,

ich hoffe Euch geht es allen gut! :)

Ich benötige wieder mal eure Hilfe beim folgendem Problem.

Mit dem Makro(diesen Teil davon):


    "For Each rngRange In WsTabelle.Range("A4:A21")
      rngRange.EntireRow.Hidden = True
    Next"


blende ich die Zeilen 4 bis 21 aus, in jeder dieser Zeile habe ich jeweils ein Kontrolllästchen  (Formularsteuerelement - nicht ActivX!!) hinterlegt. Wenn ich den o.g. Makro ausführe, dann werden zwar die Zeilen korrekt ausgeblendet allerdings werden die ganzen Kontrollkästchen übereinader gestappelt in der Zeile 22 angezeigt. Wie kann ich das hinbekommen, dass beim Ausblenden der Zeilen auch die Kontrollkästchen mit ausgeblendet werden bzw. beim wieder Einblenden auch die Kontrollkästchen wieder dahin eingeblendet werden wo sie vorher waren?


Vielen lieben Dank im Voraus
LG Alexandra
Hallo

warum bitte eine For next Schleife_  Blende doch den ganzen Bereich auf einmal aus!
WsTabelle.Range("A4:A21").EntireRow.Hidden = True   (geht auch mit Gidden = False)

Bei den Kontrollboxen bitte mal nachschauen wie die Eigenschaften eingestellt sind:
In deinem Fall muss die Eigenschaft so gesetzt werden:  Kontrollbox in Größe und Anordnung (Platz) mit Zelle fest verbunden!

mfg Gast 123

Nachtrag:   in den Eigenschaften steht der Text:  Nur von Zellposition abhängig  oder  Von Zellposition unabhängig.  Das wäre falsch!!
Moin!
Wenn ich schon VBA verwende, dann verzichte ich auf Kontrollkästchen und nehme diese (sogar imo hübschere) Variante:
https://www.clever-excel-forum.de/Thread...mal+anders

(meine Herren, wo bleibt die Zeit? Der Beitrag ist schon fast 7 Jahre alt)

Gruß Ralf
Hi Ralf,

da dein oben verlinktes Thema geschlossen ist, antworte ich mal hier.

Ein echt schönes Beispiel, wie man Checkboxen simulieren kann. Dennoch habe ich einige Anmerkungen:
Beim ersten Rechts- oder Doppel-Klick erscheint das leere Kästen. Hier würde ich das umkehren. So wie du es beim Leerzeichen gemacht hast.

Beim Change-Ereignis (Leertaste) finde ich es schade, dass man nicht mehrere Zellen gleichzeitig ändern kann. Aber klar, um das zu programmieren müsste ich jetzt mal ein wenig drüber nachdenken.

Aber gravierender ist es, dass ein Doppelklick auf eine verbundene Zelle, die in Spalte 4 startet, zu einer Fehlermeldung führt. Das liegt an dieser Anweisung:
PHP-Code:
If .Value Chr(168Then .Value Chr(254) Else .Value Chr(168
der Vergleich von Target.Value mit einem einzelnen Wert führt zu einer Fehlermeldung, da Target aus mehreren Zellen besteht. Hier hilft schon die Zeile
PHP-Code:
If .Cells(1).Value Chr(168Then .Value Chr(254) Else .Value Chr(168
(bei der Zuweisung eines Wertes zu .Value gibt es keinen Fehler). Noch besser wäre es natürlich gleich
PHP-Code:
With Target(1
zu verwenden.

Ähnliches gilt für BeforeRigthClick. Mit einem kleinen Unterschied: hier muss man tatsächlich über alle Zellen schleifen, da man auf mehreren Zellen gleichzeitig einen Rechtsklick machen kann (mehrere markieren und dann Rechtsklick). Eventuell müsste man sogar noch bei jeder Zelle prüfen, ob es sich um einen Zellverbund handelt. Mal ganz abgesehen davon, dass man mit Target zunächst ein Intersect mit Columns(4) machen müsste.

Für beide gilt: Wenn auch noch das Change-Ereignis einbezogen wird (wegen der Leertaste) sollte man auch noch jeweils die Events abschalten.

Bitte die Kritik nicht falsch verstehen. Es soll nur ein Hinweis sein, dass sich hier noch Fehlermöglichkeiten verstecken. Das mit den mehreren Zellen ist mir auch erst vor wenigen Tagen bewusst geworden. Bisher bin ich davon ausgegangen, dass - zumindest beim Doppelklick - immer nur eine Zelle im Target stecken kann.