[VBA & Excel] Kontrollkästchen Macro

ANuk3

Newbie
Registriert
März 2017
Beiträge
2
Hallo zusammen,

Vorneweg ich bin ein VBA & Excel Anfänger und bin etwas Ratlos aber mein Chef möchte folgendes in einem Excel-Sheet:

Über ein Kontrollkästchen (mehrere in Spalte B2) soll ein Text in Spalte C2 erscheinen etc.
D.h. wenn ich Kontrollkästchen1 drücke sollte ein Text in Spalte C erscheinen.
Weiter sollte bei Kontrollkästchen2 ein anderer Text in Spalte C erscheinen.
Wenn beide gedrückt sind dementsprechend beide Texte.

Meine Fragen wären:
Ist das überhaupt technisch möglich?
Falls nicht habt ihr eine bessere Idee?

Vielen Dank! und Grüße
Chris
 
Hallo Anuk3,

Weise dem Kontrollkästchen ein On_Click Ereignis zu und führe bei Klick eine VBA-Codefolge, ähnlich der aufgeführten aus:

Application.Goto Reference:=Worksheets("Tabelle1").Range("C1"), Scroll:=False
ActiveCell = Text- oder Wertzuweisung


Viel Erfolg
 
Möglich ist es. (habe es mit Office2007 probiert)
Beim einem eingefügten Kontrollkästchen (ActiveX-Steuerelement) per Rechtsklick "Code anzeigen" und dann z. B.
Code:
if checkbox1 then Range("C2").value = "Beispieltext"
else: Range("C2").value = ""

Für mehrere Kästchen muss entsprechend kombiniert werden, je nachdem, was am Ende angezeigt werden soll.
Wenn dir Formeln eher liegen, kannst du mit Kontrollkästchen (Formularsteuerelement) auch direkt eine Zelle verknüpfen, die dir WAHR oder FALSCH anzeigt, wenn das Kästchen benutzt wird.
 
Muss es VBA sein?

Es gibt 2 Arten von Kontrollkästchen. Die mit ActiveX sind die fähigeren für VBA. Mit den einfachen geht es aber auch.

Die einfachen haben eine Funktion der «zugehörigen Zelle». Diese und auch die Texte wählt man auf dem Blatt weit außerhalb des Sichtfeldes (man kann auch dort bleiben und die Methode Weißer-Adler-auf-Weißem-Grund anwenden, aber das ist nicht unbedingt meins). Ich wähle als Beispiel mal die Zellen BB1 bis BB4. BB1 ist die zugehörige Schalterzelle von Checkbox, upps, Kontrollkästchen 1, BB2 die von Nummer 2. Bei gesetztem Häkchen sind sie WAHR, sonst FALSCH. In BB3 steht der Text für Häkchen 1, in BB4 der für 2. In der Zelle in der etwas angezeigt werden soll steht dann
=WENN(BB1=WAHR;BB3&" ";"")&WENN(BB2=WAHR;BB4;"")
Achte auf eine kleine Bequemlichkeit: Hinter den Text von Nummer 1 hänge ich ein Leerzeichen, das sieht man nicht. Es wirkt erst dann wenn der Text von Nummer 2 hinzukommt. (Noch eine Bemerkung: ich ziehe das einfache & dem VERKETTEN() vor.)

Du kannst gerne mit der Mechanik basteln das Leerzeichen nur in Abhängigkeit anzuzeigen. In VBA wäre übrigens diese Logik genau die selbe.

CN8
 
Hi!

danke für die schnellen Antworten! :)

Der Hintergrund ist in meinem Fall, dass die Checkboxen Admin Rollen sind und mit jeder markierten Checkbox direkt die Erklärung bzw die Rechte angezeigt werden die durch die markierte Rolle vergeben werden. Dabei gibt es aber Rollen die teilweise die gleichen Rechte haben.

Ich probiere gleich mal eure Tipps aus.

Danke und Grüße
Chris
Ergänzung ()

Hi Jedi3,

deine Methode passt mir am besten :)
Das Problem dabei ist aber, dass wenn Checkbox1 betätigt wird, wird der "Beispieltext" nur für 1ms angezeigt und dann wieder entfernt.
Hast du da eine Idee?

Grüße
Chris
 
Zuletzt bearbeitet:
Nur noch einmal der Code von vorher für ein Kästchen vervollständigt:
Code:
Private Sub CheckBox1_Click()
    If CheckBox1 Then
        Range("C2").Value = "Beispieltext"
        Else: Range("C2").Value = ""
        End If
End Sub
Wenn ich es so benutze, bleibt der Text stehen.

Ich könnte mir vorstellen, dass du schon eine zweite Checkbox abfragst und diese nicht angehakt ist. Wenn du diese direkt hinterher mit der gleichen Funktion abfragst, würde C2 wieder mit "" gefüllt werden.
Stattdessen müsstest du (wie von cumulonimbus8 vorgeschlagen) die Abfrageergebnisse zwischenlagern und erst am Ende C2 damit füllen.

z. B.
Code:
Private Sub CheckBox1_Click()
Dim recht1, recht2 As String
    If CheckBox1 Then
        recht1 = "Admin darf dies. "
        Else: recht1 = ""
        End If
    If CheckBox2 Then
        recht2 = "Admin darf das. "
        Else: recht2 = ""
        End If
    Range("C2").Value = recht1 & recht2
End Sub
 
Zuletzt bearbeitet:
Zurück
Oben