Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1940to1944
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formularsteuerelement Kontrollkästchen

Formularsteuerelement Kontrollkästchen
10.08.2023 08:22:04
Mario
Guten Morgen,

ich stehe vor der Aufgabe einen sehr großen Fragenkatalog zu erstellen, in welchem Kontrollkästchen eingebaut werden sollen.
Das Grundprinzip habe ich auch schnell geschafft. Pro Frage sollen aktuell drei Kontrollkästchen in einer Zelle zur Auswahl stehen, welche am Ende in der Spalte "D" den farbigen Status hervorgeben.

Leider habe ich keine Ahnung von VBA und würde gerne die Kontrollkästchen automatisch runterziehen.

Das erste Kontrollkästchen bezieht sich immer auf die fortlaufende Zelle in Spalte E, die anderen beiden dementsprechend in den Zellen von F und G.

Hoffe mir kann jemand helfen, danke.

https://www.herber.de/bbs/user/162268.xlsx

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formularsteuerelement Kontrollkästchen
10.08.2023 10:21:46
Herbert Grom
Hallo Mario,

wäre es auch möglich, dass du das Ganze nicht mit den umständlichen Kontrollkästchen, sondern mit einem DropDown-Auswahlfeld machst?

Servus
Formularsteuerelement Kontrollkästchen
10.08.2023 11:04:47
Beverly
Hi Mario,

abgesehen von Sinn und Zweck solch vieler Kontrollkästchen...
Lösche alle Kontrollkästchen ab Zeile 5, die die falsche Zellverknüpfung haben, dann kannst du alle fehlenden ab Zeile 5 bis zur letzten Zeile mit folgendem Code erstellen:

Sub CheckBoxenErstellen()

Dim lngLetzte As Long
Dim lngZeile As Long
Dim arrShapes(0 To 2)
arrShapes(0) = "Kontrollkästchen 4"
arrShapes(1) = "Kontrollkästchen 5"
arrShapes(2) = "Kontrollkästchen 6"
lngLetzte = Cells(Rows.Count, 4).End(xlUp).Row
ActiveSheet.Shapes.Range(arrShapes()).Select
Selection.Copy
Application.ScreenUpdating = False
For lngZeile = 6 To lngLetzte
Cells(lngZeile, 1).Select
ActiveSheet.Paste
ActiveSheet.Shapes(ActiveSheet.Shapes.Count - 2).ControlFormat.LinkedCell = Cells(lngZeile, 7).Address
ActiveSheet.Shapes(ActiveSheet.Shapes.Count - 1).ControlFormat.LinkedCell = Cells(lngZeile, 6).Address
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).ControlFormat.LinkedCell = Cells(lngZeile, 5).Address
Next lngZeile
Application.ScreenUpdating = True
End Sub


Beachte, dass der Code einige Zeit benötigt um alle Kontrollkästchen zu erstellen.

Bis später
Karin

https://excel-inn.de/
Anzeige
Formularsteuerelement Kontrollkästchen
10.08.2023 12:31:22
Mario
Hi Karin,

vielen Dank für deine Mühe!
Das klappt soweit auch wunderbar :)

Das einzige was nun "vertauscht" ist, sind die Farben beim Status.
Bei "Vorhanden" sollte es ja auf Grün umspringen.

Nach der Eingabe und Ausführung von deinem Code ist "Vorhanden" nun rot und "Nicht Vorhanden" nun grün.
Also quasi vertauscht. Ich habe die Bedingte Formatierung nochmal neu gemacht, aber das hat ab Zeile 6 trotzdem nichts geändert.

Muss ich also etwas bestimmtes im Code verändern?
Zur Info: Ich habe den Fragenkatalog (5 zusätzliche Spalten) nachträglich vor der "Ist" Spalte mit den Kontrollkästchen eingefügt, falls es damit etwas zu tun haben sollte..

Anzeige
Formularsteuerelement Kontrollkästchen
10.08.2023 14:05:37
Beverly
Hi Mario,

damit hat es nichts zu tun sondern damit, dass ich in meinem Code die Spaltenzuweisung falsch gesetzt habe - sorry.
Führe dieses Makro aus, dann wird die Zuweisung der Zellverknüpfung geändert:

Sub Zuweisen()

Dim chkBox As CheckBox
For Each chkBox In ActiveSheet.CheckBoxes
If chkBox.Caption = "Vorhanden" Then chkBox.LinkedCell = Cells(chkBox.TopLeftCell.Row, 5).Address
If chkBox.Caption = "Bedingt Vorhanden" Then chkBox.LinkedCell = Cells(chkBox.TopLeftCell.Row, 6).Address
If chkBox.Caption = "Nicht Vorhanden" Then chkBox.LinkedCell = Cells(chkBox.TopLeftCell.Row, 7).Address
Next chkBox
End Sub


Bis später
Karin

https://excel-inn.de/
Anzeige
Ergänzung/Korrektur
10.08.2023 14:38:51
Beverly
Hi Mario,

die Zeile

If chkBox.Caption = "Bedingt Vorhanden" Then chkBox.LinkedCell = Cells(chkBox.TopLeftCell.Row, 6).Address


kannst du weglassen, denn diese CheckBox hat ja bereits die richtige Zellverknüpfung.

Bis später
Karin

https://excel-inn.de/
Ergänzung/Korrektur
10.08.2023 14:47:59
Mario
Hi Karin,

ich hatte den Code eingeführt, aber die Zuweisung war etwas kunterbunt.
Liegt aber wahrscheinlich daran das ich nicht die vollständige Mappe hochgeladen habe.

Nach einfügen des Code waren die Angaben "Wahr" und "Falsch" nämlich teilweise in der Spalte "Bemerkungen" oder "Querverweis". Leider hat das so nicht geklappt :(
Hätte dir auch gern die bereits umgesetzte Datei hochgeladen, aber die sprengt den Uploadrahmen hier.

Daher kann ich dir nur die Originalfassung anbieten, diesmal aber mit allen vorhandenen Spalten mit denen ich arbeiten muss. (Sorry, hätte ich lieber direkt gemacht)

https://www.herber.de/bbs/user/162278.xlsx
Anzeige
Kontrollkästchen erstellen
10.08.2023 15:35:30
Beverly
Hi Mario,

Sub CheckBoxenErstellen()

Dim lngLetzte As Long
Dim lngZeile As Long
Dim arrShapes(0 To 2)
arrShapes(0) = "Kontrollkästchen 4"
arrShapes(1) = "Kontrollkästchen 5"
arrShapes(2) = "Kontrollkästchen 6"
lngLetzte = Cells(Rows.Count, 9).End(xlUp).Row
ActiveSheet.Shapes.Range(arrShapes()).Select
Selection.Copy
Application.ScreenUpdating = False
For lngZeile = 5 To lngLetzte
Cells(lngZeile, 6).Select
ActiveSheet.Paste
ActiveSheet.Shapes(ActiveSheet.Shapes.Count - 2).ControlFormat.LinkedCell = Cells(lngZeile, 10).Address
ActiveSheet.Shapes(ActiveSheet.Shapes.Count - 1).ControlFormat.LinkedCell = Cells(lngZeile, 11).Address
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).ControlFormat.LinkedCell = Cells(lngZeile, 12).Address
Next lngZeile
Application.ScreenUpdating = True
End Sub


Hinweis für die Zukunft: wenn man Beispielmappen zur Verfügung stellt, sollten die darin abgebildeten Bedingungen auf jeden Fall denen in der Originalmappe entsprechen - vor allem wenn man nicht in der Lage ist, gepostete Codes selbst an die Originalbedingungen anzupassen.

Bis später
Karin

https://excel-inn.de/
Anzeige
Kontrollkästchen erstellen
10.08.2023 15:42:12
Mario
Hi Karin,

sorry nochmal. Jetzt hat auch alles funktioniert!
Vielen Dank und bis dann.
Formularsteuerelement Kontrollkästchen
10.08.2023 11:14:39
daniel
HI
Kontrollkästchen kannst du nicht "ziehen"
da musst du jedes einzeln bearbeiten.

Kann man hier tatsächlich mehrere Optionen auswählen?
ich denke nein.
dann ist das einfachste, wie von Herbert vorgeschlagen, für die Zellen eine Datenüberprüfung anzulegen.
das kannst du für viele Zellen gleichzeitig machen, oder auch auf zusätzliche Zellen erweitern.
In der Datenüberprüfung nimmst du die Option "Liste" und gibst dann semikolongetrennt die drei Texte zur Auswahl an.
der Anwender bekommt dann, wenn er auf die Zelle klickt, ein DropDown-Feld zur Auswahl, mit dem er einen der angegebenen Texte auswählen kann.

wenn du bei den Steuerelementen bleiben willst, würde ich eher zu einer Listbox raten.
dann hast du pro Zelle nur ein Steuerelment und nicht drei.

Gruß Daniel

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige