Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kontrollkästchen löst kein Change-Ereignis aus?

Kontrollkästchen löst kein Change-Ereignis aus?
Kasimir
Hallo an alle Helfer!
Ich habe da eine Frage zu einem Kontrollkästchen aus der Symbolleiste „Formular“. Ich habe in meiner Datei 5 solcher Kontrollkästchen und diese auch mit jeweils einer Zelle verknüpft. Nun dachte ich, da sich ja der Zellwert von FALSCH auf WAHR und zurück ändert, je nachdem ob das Kontrollkästchen aktiviert ist oder nicht, dass ich durch den Wechsel von FALSCH und WAHR das „Worksheet_Change-Ereignis“ auslöse. Leider ist das scheinbar ein Irrtum.
Kann mir das jemand erklären, warum das „Worksheet_Change-Ereignis“ nicht ausgelöst wird, obwohl sich der Zellwert von FALSCH in WAHR oder umgekehrt ändert.
Danke Euch für Eure Antworten,
Kasimir
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Kontrollkästchen löst kein Change-Ereignis aus?
14.07.2010 12:08:25
JogyB
Das können Dir nur die Programmierer von Excel erklären ;).
Nimm die Kontrollkästchen aus der Steuerelement-Toolbox, die haben ein eigenes Change-Ereignis.
Gruß, Jogy
AW: Kontrollkästchen löst kein Change-Ereignis aus?
14.07.2010 12:49:58
Armin
Hallo Kasimir,
das Change Ereignis wird bei Kontroll-K. nicht ausgelöst! Aber wenn Du das KK von ActiveX benutzt kannst Du das Click-Ereignis auswerden.
Private Sub CheckBox1_Click()
MsgBox "Änderung Checkbox"
End Sub
und damit kann man dann fast alles bewirken.
Gruß Armin
Anzeige
AW: Kontrollkästchen löst kein Change-Ereignis aus?
14.07.2010 13:15:10
JogyB
Er kann dann auch das Change-Ereignis der Checkbox nehmen (wie ich zuvor schon geschrieben habe).
Gruß, Jogy
AW: Kontrollkästchen löst kein Change-Ereignis aus?
14.07.2010 14:58:17
Beverly
Hi Kasimir,
genau so wie die Veränderung eines Formelergebnisses kein Ereignis auslöst, löst auch die Veränderung in der Zellverknüpfung kein Ereignis aus. Aber du kannst dem Kontrollkästchen ein Makro zuweisen, welches die Veränderung des Zustandes des Kontrollkästchens auswertet. Der Wert 1 bedeutet aktiviert und -4146 bedeutet nicht aktiviert. Das Makro könnte z.B. so aussehen:
Sub Kontrollkaestchen()
MsgBox ActiveSheet.Shapes(ActiveSheet.Application.Caller).ControlFormat
End Sub

Du kannst das Makro jedem der Kontrollkästchen zuweisen, sodass du nur 1 einzige Makro benötigst.


Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Kontrollkästchen und Change-Ereignisse in Excel verstehen


Schritt-für-Schritt-Anleitung

  1. Kontrollkästchen einfügen: Gehe zu Entwicklertools > Einfügen und wähle das Kontrollkästchen aus der ActiveX-Steuerelemente aus.

  2. Zellverknüpfung herstellen: Klicke mit der rechten Maustaste auf das Kontrollkästchen und wähle Eigenschaften. Setze die LinkedCell-Eigenschaft auf die gewünschte Zelle.

  3. Code hinzufügen: Öffne den VBA-Editor (Alt + F11) und wähle das Arbeitsblatt, auf dem sich das Kontrollkästchen befindet. Füge den folgenden Code ein:

    Private Sub CheckBox1_Click()
       MsgBox "Änderung Checkbox"
    End Sub
  4. Makro zuweisen: Du kannst das Makro jedem Kontrollkästchen zuweisen, sodass eine einheitliche Handhabung gewährleistet ist.


Häufige Fehler und Lösungen

  • Fehler: Das Worksheet_Change-Ereignis wird nicht ausgelöst.

    • Lösung: Das liegt daran, dass das Standard-Kontrollkästchen aus der Symbolleiste „Formular“ kein Change-Ereignis unterstützt. Nutze stattdessen das ActiveX-Kontrollkästchen.
  • Fehler: Makro führt nicht den gewünschten Code aus.

    • Lösung: Stelle sicher, dass du das richtige Kontrollkästchen im VBA-Editor ausgewählt hast und dass das Makro korrekt zugewiesen wurde.

Alternative Methoden

Falls du keine ActiveX-Kontrollkästchen verwenden möchtest, kannst du auch:

  • Formeln: Verwende Formeln innerhalb der Zellen, um den Status des Kontrollkästchens zu überwachen.
  • Datenüberprüfung: Setze eine Datenüberprüfung ein, die auf den Zustand der Zelle reagiert.

Praktische Beispiele

Hier ist ein Beispiel für ein Makro, das den Status eines Kontrollkästchens auswertet:

Sub Kontrollkaestchen()
    Dim Status As Integer
    Status = ActiveSheet.Shapes(Application.Caller).ControlFormat.Value
    If Status = 1 Then
        MsgBox "Kontrollkästchen aktiviert"
    Else
        MsgBox "Kontrollkästchen nicht aktiviert"
    End If
End Sub

Nutze dieses Makro, um zu erkennen, ob das Kontrollkästchen aktiviert oder deaktiviert ist.


Tipps für Profis

  • Verwende Ereignisse: Nutze das Click-Ereignis der ActiveX-Kontrollkästchen, um mehr Kontrolle über die Interaktionen mit den Kontrollkästchen zu haben.
  • Makrooptimierung: Halte deine Makros so schlank und effizient wie möglich, um die Performance deiner Excel-Datei zu optimieren.
  • Dokumentation: Dokumentiere deine Makros und deren Funktionen, um die Wartung und Anpassung zu erleichtern.

FAQ: Häufige Fragen

1. Warum löst ein Kontrollkästchen kein Change-Ereignis aus?
Ein Standard-Kontrollkästchen aus der Symbolleiste „Formular“ löst kein Worksheet_Change-Ereignis aus. Nutze ActiveX-Kontrollkästchen, um das Click-Ereignis zu verwenden.

2. Kann ich mehrere Kontrollkästchen mit einem Makro steuern?
Ja, du kannst denselben Makro-Code mehreren Kontrollkästchen zuweisen, um ihre Statusänderungen zu überwachen und entsprechend zu reagieren.

3. Was ist der Unterschied zwischen Formular- und ActiveX-Kontrollkästchen?
Formular-Kontrollkästchen sind einfacher und bieten weniger Funktionen, während ActiveX-Kontrollkästchen umfangreiche Ereignisse und Eigenschaften bieten, die eine flexiblere Programmierung ermöglichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige