Supportnet / Forum / Tabellenkalkulation
Kontrollkästchen Makro Frage
Frage
Hallo !
Wenn ich ein Kontrollkästchen anklicke möchte ich das in der Zelle E3 ein Text (zB: "Neu") reingeschrieben wird.
Wie mache ich das ?
Oder ist ein Kobinationsfeld hier einfacher,
das das ausgewählte in der Zelle E3 aufscheint ?
DANKE
Ce
Antwort 1 von fürLau
Hallo
..so vieleicht:
Gruß fürLau
..so vieleicht:
Private Sub CheckBox1_Click()
If CheckBox1.Value = True Then
ActiveSheet.Range("E3").Value = "Neu"
Else
ActiveSheet.Range("E3").Value = ""
End If
End SubGruß fürLau
Antwort 2 von djsquirrel
Hi !
Also ich habe es versucht und als Marko DAU bitte ich nochmals um Hilfe:
Hier das File mit 100% genau Deinem Code/Makro:
http://www.Eichhorn.cc/file/CheckBox1_Click.xls
Danke
ce
Also ich habe es versucht und als Marko DAU bitte ich nochmals um Hilfe:
Hier das File mit 100% genau Deinem Code/Makro:
http://www.Eichhorn.cc/file/CheckBox1_Click.xls
Danke
ce
Antwort 3 von fürLau
Leider.;-( gibts in Excel verschiedene Kontrollkästchen, Du hast Dich wohl für ein Falsches entschloßen!
Antwort 4 von CaroS
Hallo djsquirrel,
das Problem und das Missverständnis ist, dass Du offenbar ein Formular-Steuerelement und kein Toolbox-Steuerelement verwendet hast. (Deshalb darf der VBA-Code auch nicht mit Sub CheckBox1_Click() bezeichnet werden.) Toolbox-Steuerelemente sind meiner Meinung nach mit VBA einfacher zu handhaben als Formular-Steuerelemente, hier (bei den Formular-Steuerelementen) ist es schon schwieriger, das richtige überhaupt erstmal zu finden und darauf zuzugreifen.
Für das Steuerelement "NEU" in Deiner Beispiel-Datei würde folgender Code gehen, Du musst ihn nur über rechte Maustaste -- Makro zuweisen... zuweisen:
Sub Klick_FormCB_E3()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
If sh.Type = msoFormControl Then
If sh.FormControlType = xlCheckBox And sh.AlternativeText = "NEU" Then
If sh.ControlFormat.Value = 1 Then
ActiveSheet.Range("E3").Value = "Neu"
Else
ActiveSheet.Range("E3").Value = ""
End If
End If
End If
Next
Gruß,
CaroS
das Problem und das Missverständnis ist, dass Du offenbar ein Formular-Steuerelement und kein Toolbox-Steuerelement verwendet hast. (Deshalb darf der VBA-Code auch nicht mit Sub CheckBox1_Click() bezeichnet werden.) Toolbox-Steuerelemente sind meiner Meinung nach mit VBA einfacher zu handhaben als Formular-Steuerelemente, hier (bei den Formular-Steuerelementen) ist es schon schwieriger, das richtige überhaupt erstmal zu finden und darauf zuzugreifen.
Für das Steuerelement "NEU" in Deiner Beispiel-Datei würde folgender Code gehen, Du musst ihn nur über rechte Maustaste -- Makro zuweisen... zuweisen:
Sub Klick_FormCB_E3()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
If sh.Type = msoFormControl Then
If sh.FormControlType = xlCheckBox And sh.AlternativeText = "NEU" Then
If sh.ControlFormat.Value = 1 Then
ActiveSheet.Range("E3").Value = "Neu"
Else
ActiveSheet.Range("E3").Value = ""
End If
End If
End If
Next
Gruß,
CaroS
Antwort 5 von djsquirrel
Hallo CaroS,
danke für Deine Hilfe, jedoch FUNKTIONIERT ES LEIDER NICHT !!!
Er schreibt jedesmal "Fehler beim Kopilieren"
:-(
ce
danke für Deine Hilfe, jedoch FUNKTIONIERT ES LEIDER NICHT !!!
Er schreibt jedesmal "Fehler beim Kopilieren"
:-(
ce
Antwort 6 von fürLau
Hallo
Ich hoffe der Kollege caroS ist damit einverstanden wenn ich seinen Code vervollständige.
Es fehlt die Anweisung End Sub am Ende des Codes, also nach Next .
Gruß
Ich hoffe der Kollege caroS ist damit einverstanden wenn ich seinen Code vervollständige.
Es fehlt die Anweisung End Sub am Ende des Codes, also nach Next .
Gruß
Antwort 7 von fürLau
Nachtrag:
für ein Kontrollkästchen aus Symbolleiste Formular ginge das:
Das fette ist der vba-Name des "Kontrollkästchen 2".
für ein Kontrollkästchen aus Symbolleiste Formular ginge das:
Sub Check_Box()
If ActiveSheet.CheckBoxes("Check Box 2").Value = 1 Then
ActiveSheet.Range("E3").Value = "Neu"
Else: ActiveSheet.Range("E3").Value = "": End If
End SubDas fette ist der vba-Name des "Kontrollkästchen 2".
Antwort 8 von djsquirrel
hi fürLau !
DANKE es funkt !!
Wer es haben will:
http://www.Eichhorn.cc/file/CheckBox1_Click.xls
Mit freundlichen Grüssen
Christian
DANKE es funkt !!
Wer es haben will:
http://www.Eichhorn.cc/file/CheckBox1_Click.xls
Mit freundlichen Grüssen
Christian
Antwort 9 von CaroS
Hallo allerseits!
@fürLau / AW4, 5, 6:
Bin einverstanden und sage danke! Es war auch keine böse Absicht, sondern einfach nur vergessen oder abgerutscht beim Markieren/Kopieren.
Und ansonsten habe ich auch nichts gegen Widerspruch in der Sache, denn der ist ja meistens berechtigt oder zumindest ein Denkanstoß, wie andere etwas sehen bzw. lösen würden.
In dem Sinne ist für mich natürlich vor allem Deine Antwort 7 sehr interessant.
Für mich selber kann ich das sehr gut verwenden, da brauche ich nicht über den Alter-nativeText gehen. Dafür muss ich aber den Namen wissen, ihn notfalls muss per VBA ermitteln. Oder kennst Du einen einfacheren Weg (bei Formular-Steuerelementen)?
Bei Problemen im Forum wird es schwieriger, denn da weiß man ja meistens den Namen der CheckBox nicht und oft noch nicht einmal, ob es überhaupt eine CheckBox oder von welcher Art das Steuerelement ist, Formular- oder Toolbox-Steuerelement.
Die Schreibweise
Gruß,
CaroS
@fürLau / AW4, 5, 6:
Bin einverstanden und sage danke! Es war auch keine böse Absicht, sondern einfach nur vergessen oder abgerutscht beim Markieren/Kopieren.
Und ansonsten habe ich auch nichts gegen Widerspruch in der Sache, denn der ist ja meistens berechtigt oder zumindest ein Denkanstoß, wie andere etwas sehen bzw. lösen würden.
In dem Sinne ist für mich natürlich vor allem Deine Antwort 7 sehr interessant.
ActiveSheet.CheckBoxes("Name_der_CheckBox") ist kürzer, direkter und effektiver als meine Variante, aber da bin ich - selbst mit der VBA-Hilfe - nicht drauf gekommen. Man kann nicht alles wissen, aber man kann in so einem Forum eine Menge lernen. Deshalb auch dafür: Danke! Für mich selber kann ich das sehr gut verwenden, da brauche ich nicht über den Alter-nativeText gehen. Dafür muss ich aber den Namen wissen, ihn notfalls muss per VBA ermitteln. Oder kennst Du einen einfacheren Weg (bei Formular-Steuerelementen)?
Bei Problemen im Forum wird es schwieriger, denn da weiß man ja meistens den Namen der CheckBox nicht und oft noch nicht einmal, ob es überhaupt eine CheckBox oder von welcher Art das Steuerelement ist, Formular- oder Toolbox-Steuerelement.
Die Schreibweise
Else: ActiveSheet.Range("E3").Value = "": End If werde ich aber wahrscheinlich nicht übernehmen, selbst wenn man so die eine oder andere Code-Zeile sparen kann. Oder steckt da noch mehr dahinter?Gruß,
CaroS
Antwort 10 von fürLau
Hallo @CaroS
Nein - nur Zeilensparend wegen kleinem Bildschirm -
und schöne Grüße.
Nein - nur Zeilensparend wegen kleinem Bildschirm -
und schöne Grüße.

