Liste erstellen aus Checkbox-Auswahl
#1
Hi,

ich hab schon in Suchmaschinen gesucht, aber bisher nicht die richtige Lösung gefunden. Ich würde gerne eine Liste in Excel eintragen mit jeweils einer Checkbox davor. Also:

o Listenpunkt 1
x Listenpunkt 2
o Listenpunkt 3
x Listenpunkt 4
x Listenpunkt 5

Je nachdem was ich anhake, sollen die Punkte unterhalb der Liste in einer Zeile (mit Komma getrennt) ausgegeben werden. Also in dem Fall wäre das dann:
Deine Auswahl: Listenpunkt 2, Listenpunkt 4, Listenpunkt 5

Ideal wäre darunter auch noch ein Counter, wie viele Punkte man ausgewählt hat.

Bin ich da bei Excel richtig und ist das damit umsetzbar? Falls ja, würde ich mich freuen, wenn ihr mir helfen könntet.

Viele Grüße & Danke
Michael
Top
#2
Hallo Michael,

hier ein Beispiel mit einem UserForm, welches eine ListBox und einen CommandButton enthält:
Private Sub CommandButton1_Click()
  Dim strAuswahl As String
  Dim i As Long, j As Long
  With ListBox1
    For i = 0 To .ListCount - 1
      If .Selected(i) Then
        j = j + 1
        strAuswahl = strAuswahl & ", " & .List(i)
      End If
    Next i
  End With
  Range("C6").Value = j
  Range("D6").Value = Mid(strAuswahl, 3)
End Sub
Gruß Uwe


Angehängte Dateien
.xlsm   Liste erstellen aus Checkbox-Auswahl.xlsm (Größe: 17,73 KB / Downloads: 10)
Top
#3
Hallo,

von mir ein Beispiel ohne VBA.


.xlsx   CheckboxAuswahl.xlsx (Größe: 15,13 KB / Downloads: 14)

Ich arbeite mit zwei ausgeblendeten Hilfsspalten (F:G)
Gruß Atilla
Top
#4
Hallo,

vielen Dank für Eure Antworten und die Beispiele. Das ist im Endeffekt genau das was ich suche :)

Die Version ohne VBA finde ich etwas besser für mich.

@atilla
Kannst Du mir bitte nochmal helfen, das etwas anzupassen? Eigentlich dachte ich bis jetzt, dass ich mich in Excel einigermaßen zurecht finde und Formeln auch anpassen kann, aber bei Deiner Hilfsformel in Spalte G blicke ich irgendwie nicht durch :21: Spalte F ist klar, aber was macht die Spalte G?

Ich wollte zum einen die beiden Zeilen "Deine Auswahl" und "Gesamt" nach oben in Zeile 1 und 2 verschieben. Aber sobald ich oben eine leere Zeile einfüge, funktioniert deine ganze Formel nicht mehr und ich finde nicht heraus, was ich da entsprechend anpassen muss?

Und wenn ich weitere Listenpunkte hinzufügen möchte, wollte ich die Spalten A-G markieren und nach unten ziehen. Aber auch das funktioniert nicht, da man die Checkbox wohl nicht so einfach kopieren kann. Gibt es da einen Trick? Anbei mal eine Tabelle, wie es optisch am Ende aussehen soll.

Würde mich freuen, wenn bei der Anpassung mir nochmal jemand helfen könnte.


Angehängte Dateien
.xlsx   Mappe1.xlsx (Größe: 25,58 KB / Downloads: 6)
Top
#5
Hallo Michael,

ich hatte vergessen zu schreiben, dass die Boxen mit den Zellen verknüpft sind in dem sie sich befinden.
Das bedeutet, dass bei Auswahl in die Zelle Wahr oder Falsch eingetragen wird.
Bei Wahr in der Zelle wird in Spalte G der Wert der Zelle aus Spalte B übernommen.
In Spalte F wird dann eine lückenlose Liste generiert.

Durch Textverkettung hole ich die Liste dann in die Zelle mit der Auflistung.
Für jede Box muss dann in der Formel die Zelladresse angegeben werden.
Beim Einfügen oder Löschen einer Box müsste dann die Formel angepasst werden

Wenn Du eine Box einfügst und diese mit der Zelle verknüpfst, wird die Zellverknüpfung beim Kopieren mit übernommen.
Deswegen wurden bei Dir die Boxen gleich geschaltet.
Du musst für jede Box die Zellverknüpfung manuell in den Eigenschaften ändern/anpassen.

Ich habe Dir Deine Datei angepasst und eingestellt.

Unten stelle ich Code ein, welches Du nutzen kannst um die Boxen bei Bedarf in einem abwählen kannst.
Dann hast Du die Möglichkeit alle Boxen zu löschen oder eine vorgegebene Anzahl einzufügen.

Beim Einfügen wird nachgefragt, wieviele eingefügt werden.
Die Platzierung der Boxen ist im Code zu Beginn fest vorgegeben.
Schau Dir die Kommentare an.
Der gesamten Code kannst Du in ein Modul einfügen. Unter Makros in der Symbolleiste Entwicklertools kannst Du die einzelnen Prozeduren aufrufen und ausführen.
Genug geschrieben, teste alles und tob dich erst mal mit der Beispieldatei aus.


.xlsx   CheckboxAuswahl_3.xlsx (Größe: 21,11 KB / Downloads: 4)

Code:
Option Explicit

Sub KontrollKästchen_löschen()
Dim i As Integer

With Worksheets("Tabelle1")
   For i = .CheckBoxes.Count To 1 Step -1
     .CheckBoxes(i).Delete
   Next
End With

End Sub

Sub KontrollKästchen_Häckchen_raus()
Dim i As Integer

With Worksheets("Tabelle1")
   For i = .CheckBoxes.Count To 1 Step -1
       If .CheckBoxes(i) = 1 Then .CheckBoxes(i) = 0
   Next
End With

End Sub

Sub KontrollKästchen_einfügen()

Dim objBox As Object
Dim shpBox As Shape
Dim wksA As Worksheet
Dim lngZeile As Long
Dim rngZelle As Range
Dim lngAbZeile As Long
Dim lngLinkedCellSpalte As Long
Dim vntAnzahlKaestchen As Variant
Dim lngKaestchenNummer As Long
Dim rngLinkedCell As Range

lngAbZeile = 5 'Anpassen!
lngLinkedCellSpalte = 1 'Anpassen!
Set wksA = Worksheets("Tabelle1") 'Anpassen!

vntAnzahlKaestchen = InputBox("Bitte di Anzahl Kästchen angeben", "Frage", 1)
If vntAnzahlKaestchen = "" Then
MsgBox "Abgebrochen", , "Abgebrochen"
Exit Sub
End If


Application.ScreenUpdating = False

For lngKaestchenNummer = 1 To vntAnzahlKaestchen
lngZeile = lngAbZeile + ((lngKaestchenNummer - 1))
Set rngZelle = wksA.Cells(lngZeile, lngLinkedCellSpalte)
Set objBox = wksA.CheckBoxes.Add(rngZelle.Left, rngZelle.Top, 20, 1)

Set shpBox = wksA.Shapes(objBox.Name)
With shpBox
   .Top = rngZelle.Top + (rngZelle.Height - .Height) / 2
   .Left = rngZelle.Left + (rngZelle.Width - .Width) / 2
   .TextFrame.Characters.Text = "Kontrollkaestchen_" & lngKaestchenNummer
   .Name = "Kontrollkaestchen_" & lngKaestchenNummer & "_" & lngLinkedCellSpalte
   .TextFrame.Characters.Text = ""
End With
objBox.Value = 0
objBox.LinkedCell = rngZelle.Address(True, True, xlA1, True)
Next

End Sub
Gruß Atilla
Top
#6
Erst einmal ein großes Danke an Dich und für Deine Hilfe. :17:


Zitat:Wenn Du eine Box einfügst und diese mit der Zelle verknüpfst, wird die Zellverknüpfung beim Kopieren mit übernommen.
Deswegen wurden bei Dir die Boxen gleich geschaltet.
Du musst für jede Box die Zellverknüpfung manuell in den Eigenschaften ändern/anpassen.


Da merke ich doch, wo meine Defizite sind. Mit den Entwicklertools habe ich in Excel noch nie gearbeitet.

Wenn ich jetzt die gesamte Zeile 20 (Listenpunkt 16) nach unten kopiere, wird daraus ja der Listenpunkt 17. Dann gehe ich auf die Checkbox und klicke bei Entwicklertools auf Eigenschaften. Ist das richtig? Aber was muss ich dann hier ändern? Oder ist die Zellverknüpfung woanders? Das wurmt mich gerade, dass ich das selber nicht kapiere :20:
Top
#7
Hallo Michael,

Du hast zwei Möglichkeiten die Eigenschaften der Boxen aufzurufen:

1. rechtsklick auf eine Box, im Kontextmenü unten: Steuerelement formatieren auswählen
im erscheinenden Fenster unter dem Reiter "Steuerung" findest Du Zellverknüpfung

2.rechtsklick auf eine Box, unter Entwicklertools Eigenschaften aufrufen und wie 1. fortfahren
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • michaelxxx
Top
#8
(04.02.2020, 11:33)atilla schrieb: Unten stelle ich Code ein, welches Du nutzen kannst um die Boxen bei Bedarf in einem abwählen kannst.
Dann hast Du die Möglichkeit alle Boxen zu löschen oder eine vorgegebene Anzahl einzufügen....

Boah, ist das Ganze abgefahren (im Vergleich zu meinem doch recht komplizierten Vorschlag). :17:
Top
#9
Hallo Uwe,


Mein Vorschlag ist auf die Wünsche des TE ausgerichtet.
Ich habe mir gleich gedacht, dass er in der Tabelle arbeiten möchte.

Das Ganze funktioniert ohne Code.

Den Code kann man nutzen muss man nicht.

"Boah" ist ziemlich arrogant und abwertend, dass erwartet man von einem Moderator nicht.
Ein Moderator sollte auch über die Netiquette des Forums informiert sein, denn dann würde zu Beginn einer Antwort eine Grußformel stehen.
Daraus kann man dann auch ableiten wen Du gerade ansprichst.

Und das war es wieder mal von mir, tschüss!

P.S. Vielleicht solltest Du Dir Deine Signatur noch mal anschauen.
Gruß Atilla
Top
#10
@atilla: von meiner Seite nochmal ein großes Danke, Du hast mir sehr geholfen... und ich sehe Deine Anmerkung genauso.
[-] Folgende(r) 1 Nutzer sagt Danke an michaelxxx für diesen Beitrag:
  • atilla
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste