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

Forumthread: Checkbox aktivieren/deaktivieren wenn zwei Kriteri

Checkbox aktivieren/deaktivieren wenn zwei Kriteri
13.09.2017 11:09:37
Toni

Zitat
Ändern
Löschen
Hallo liebe Forumsgemeinde,
ich bräuchte Hilfe bei einem VBA-Problem und würde mich über Unterstützung freuen!
In meinem Sheet arbeite ich mit einer Checkbox. Diese soll nicht aktiv (also nicht auswählbar) sein, wenn Zelle J168 kleiner 2.500 ist und die Zelle M8 nicht befüllt ist.
Ich wollte das folgendermaßen lösen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(168, 10) 

Jetzt ist es aber so, das sich die Sperre (aktiv/inaktiv) der Checkbox nur ändert, wenn sich der Wert in Zelle J168 verändert. Wenn sich der Wert in M8 ändert, passiert vorerst nichts. Erst wenn ich bei J168 eine Änderung vornehme, werde die Kriterien überprüft und die Checkbox ist anwählbar oder eben nicht.
Lässt sich das irgendwie ändern?
Danke und LG
Toni
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: OR statt AND ..
13.09.2017 11:22:51
Gerd
..soll schon geholfen haben, Toni.
Gruß Gerd
AW: OR statt AND ..
13.09.2017 11:39:09
Toni
Hallo Gerd,
danke für den Hinweis. Ich habe es jetzt folgendermaßen angepasst:
Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(168, 10) > 2499 Or Cells(8, 13)  "" Then
CheckBox24.Enabled = True
Else
CheckBox24.Value = False
CheckBox24.Enabled = False
End If
End Sub
Das ursprüngliche Problem besteht aber leider immer noch. Die Checkbox (enabled true/false) verändert sich aber erst, wenn der Wert in J168 geändert wird (und nicht, wenn ich M8 ändere).
LG
Toni
Anzeige
AW: Check the Box
13.09.2017 12:03:36
Gerd
Hallo Toni,
etwas Spaghetticode. Ich habe mich an deiner ersten verbalen Beschreibung orientiert
u. vorausgesetzt, dass sich die beiden Zellen nicht durch Formeln ändern, sondern per Eingaben.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0, xlA1) = "M8" Or Target.Address(0, 0, xlA1) = "J168" Then
If Target.Address(0, 0, xlA1) = "J168" Then
If Target 
Gruß Gerd
Anzeige
AW: Check the Box
13.09.2017 13:30:33
Toni
Hallo Gerd,
danke für deine Hilfe. Jetzt hab ich das Problem gefunden - die Zelle M8 ändert sich per Formel. Das wird dann nicht automatisch übernommen. Gibt es dafür vielleicht eine Lösung?
LG
Toni
AW: Checkbox aktivieren/deaktivieren wenn zwei Kriteri
14.09.2017 06:36:29
Gerd
Hallo Tobi,
neuer Versuch:
Private Sub Worksheet_Calculate()
CheckBox24.Enabled = (Cells(8, 13)  "" Or Cells(168, 10) >= 2500)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0, xlA1) = "J168" Then
CheckBox24.Enabled = (Cells(8, 13)  "" Or Target >= 2500)
End If
End Sub

Gruß Gerd
Anzeige
AW: Checkbox aktivieren/deaktivieren wenn zwei Kriteri
18.09.2017 11:54:03
Toni
Hallo Gerd,
jetzt funktioniert es - vielen, vielen Dank!!
LG
Toni

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Checkbox aktivieren/deaktivieren bei mehreren Kriterien in Excel


Schritt-für-Schritt-Anleitung

Um eine Checkbox in Excel zu aktivieren oder zu deaktivieren, basierend auf mehreren Kriterien, kannst du den folgenden VBA-Code verwenden. Dieser Code prüft, ob der Wert in Zelle J168 größer oder gleich 2500 ist und ob Zelle M8 nicht leer ist.

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Wähle das entsprechende Arbeitsblatt im Projekt-Explorer aus.
  3. Füge den folgenden Code in das Codefenster ein:
Private Sub Worksheet_Calculate()
    CheckBox24.Enabled = (Cells(8, 13) <> "" Or Cells(168, 10) >= 2500)
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0, xlA1) = "J168" Then
        CheckBox24.Enabled = (Cells(8, 13) <> "" Or Target >= 2500)
    End If
End Sub
  1. Schließe den VBA-Editor und teste die Checkbox, indem du die Werte in Zelle J168 oder M8 änderst.

Häufige Fehler und Lösungen

  • Checkbox bleibt deaktiviert: Stelle sicher, dass die Zelle M8 tatsächlich nicht leer ist und dass die Zelle J168 einen Wert von 2500 oder mehr hat.

  • Änderungen in M8 wirken sich nicht aus: Wenn M8 durch eine Formel berechnet wird, wird das Worksheet_Change-Ereignis nicht ausgelöst. Verwende stattdessen das Worksheet_Calculate-Ereignis, um die Checkbox zu aktivieren/deaktivieren.


Alternative Methoden

Eine Alternative zum VBA-Ansatz ist die Verwendung von Excel-Formeln, um die Checkbox zu steuern. Dies ist jedoch nur möglich, wenn du die Checkbox über ein Formularsteuerelement einfügst und die Eigenschaften entsprechend anpasst.

  1. Füge die Checkbox über Entwicklertools -> Einfügen -> Checkbox (Formularsteuerelement) hinzu.
  2. Weise die Checkbox einer Zelle zu und verwende eine Formel in dieser Zelle, um die Bedingungen zu prüfen.

Praktische Beispiele

Angenommen, du möchtest, dass die Checkbox nur aktiviert wird, wenn:

  • Zelle J168 ist größer als 2500
  • Zelle M8 ist nicht leer

Der folgende VBA-Code erfüllt diese Bedingungen:

Private Sub Worksheet_Calculate()
    CheckBox24.Enabled = (Cells(8, 13) <> "" Or Cells(168, 10) >= 2500)
End Sub

Durch das Anpassen der Bedingungen kannst du die Logik weiter verfeinern.


Tipps für Profis

  • Nutze Debug.Print innerhalb deines Codes, um den Status der Zellen während der Ausführung zu überprüfen. Das hilft dir, Probleme schnell zu identifizieren.

  • Wenn du mehrere Kontrollkästchen hast, denke daran, dass du die Logik in einer separaten Subroutine organisieren kannst, um die Lesbarkeit und Wartbarkeit deines Codes zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass nur ein Kontrollkästchen ausgewählt werden kann? Verwende die Option Group-Steuerelemente oder implementiere Logik im VBA, die die anderen Checkboxen deaktiviert, wenn eine aktiviert wird.

2. Was tun, wenn ich ein Kontrollkästchen löschen möchte? Rechtsklicke auf die Checkbox und wähle Löschen aus dem Kontextmenü.

3. Funktioniert dieser Code in allen Excel-Versionen? Der VBA-Code ist in den meisten modernen Excel-Versionen ab 2010 funktionsfähig. Stelle sicher, dass die Entwicklertools aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige