Spalten ein- und ausblenden mit Checkbox

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Spalten ein- und ausblenden mit Checkbox

    Hallo zusammen!

    Erst mal: Ich habe die Suchfunktion schon verwendet, auch etwas gefunden, aber es funktioniert einfach nicht was dort angegeben war. Bin mittlerweile etwas am Verzweifeln...

    Zum Problem: Ich möchte über eine Checkbox (Formularsteuerelemente) eine bestimmte Zeile einblenden (wenn checked) und ausblenden (wenn unchecked). Dafür habe ich ursprünglich mit diesem Code gearbeitet:

    Sub EinAusblenden()
    If CheckboxSpalteB = True Then
    Columns("B").Hidden = False
    Else: Columns("B").Hidden = True
    End If
    End Sub

    Wenn ich das Makro der Checkbox SpalteB zuweise und sie danach anklicke, wird Spalte B ausgeblendet. Nur das einblenden funktioniert nicht mehr. Komme einfach nicht weiter und würde mich riesig über Hilfe freuen!

    Grüße

    Mathias
    Der Code steht wo?
    Im Click-Event der Checkbox?
    Oder im Change-Event?
    Dann müsste er eigentlich funktionieren.

    Allerdings tut es schon etwas weh in den Augen.
    Es geht auch einfacher:

    Visual Basic-Quellcode

    1. Sub CheckboxSpalteB_Change
    2. Columns(2).Hidden = Not CheckboxSpalteB.Value
    3. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Allerdings tut es schon etwas weh in den Augen.


    Hm - Augenarzt konsultieren?

    Mal im ernst - durch die vielen "mehrfachklugen" Bemerkungen und dem forschen "Tonfall" (nicht nur hier, auch in anderen Foren) fehlt einem (mir) fast die Motivation Fragen zu stellen oder gar zu beantworten....
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    durch die vielen "mehrfachklugen" Bemerkungen und dem forschen "Tonfall"
    [OffTopic]
    Leider hast du die Möglichkeit zum Austausch über PN abgeschaltet.
    Deswegen meine Antwort an dieser Stelle.
    Wenn ein Mod meint, der Post sei fehlplatziert, möge er ihn löschen.


    Wenn der Tonfall forsch wirkt, ist dass nicht meine Absicht.
    Im genannten Fall ist es aber wirklich so, dass sich bei mir fast körperliche Schmerzen einstellen.

    Wenn ich "mehrfachklug" schreibe, dann nicht, um der Besserwisserei genüge zu tun, sondern es ist meist mit konstruktiver Kritik verbunden und bietet in der Regel die Anleitung oder den Code mit an, wie es besser geht (oder vielleicht auch mal, wie es nicht geht).
    Und ich schreibe so etwas nicht aus Polemik oder um anderen weh zu tun.

    Wer nur mal eben etwas hacken will, kann meinetwegen schreiben wie er will, aber hier lesen auch solche Leute mit, die Profis werden wollen.
    Und denen zuliebe sollte man darauf hinweisen, wenn der Programmierstil sich zu weit vom Brauchbaren wegbewegt.

    fehlt einem (mir) fast die Motivation Fragen zu stellen oder gar zu beantworten
    Das wäre schade.
    Immerhin gehörst du zu denjenigen Benutzern, von denen das Forum profitiert.
    Du wirst dir doch dein Selbstbewusstsein nicht so einfach zerstören lassen wollen ;)

    [/OffTopic]
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    [Back to Topic] :)

    Hi!

    Ich habe das eigentlich nicht als forsch empfunden. Bin noch im Anfangslernstadium und kann Berufsbedingt leider gerade nicht VBA von vorne lernen, was sicherlich sinnvoller wäre sondern muss mich momentan etwas durchwursteln. Daher ist die Frage die jetzt kommt vielleicht auch mit körperlichen Schmerzen verbunden :)

    Das ganze war als Modul mit der checkbox verknüpft. Das war auf jeden Fall falsch. Das Changeevent schreibe ich in den Code von Tabelle1, richtig? Das wäre dann das Sub

    Visual Basic-Quellcode

    1. Sub CheckboxSpalteB_Change()
    2. Columns(2).Hidden = Not CheckboxSpalteB.Value
    3. End Sub


    im Code von Tabelle 1.

    Nur leider will es so auch nicht. Muss ich noch irgendwas zusätzlich einstellen?

    Danke für die Hilfe!

    Grüße

    Mathias
    Wenn du einen Breakpoint in die Routine setzt, kommt er an den Punkt, also unterbricht er die Codeausführung an dem Punkt?
    Dann müsste er nach Setzen der Hidden-Eigenschaft die Spalte ein- bzw. ausblenden.

    Oder ist es dasselbe Verhalten, dass die Spalte nicht wieder eingeblendet wird?
    Hast du vielleicht Application.ScreenUpdating abgeschaltet?
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --