ich bin gerade dabei für unseren Verein eine Protokollvorlage zu erstellen. Damit es relativ einfach und schnell geht hatte ich bei der Auswahl der anwesenden Personen an eine Userform gedacht, wo mach durch einfaches Häkchen setzen jemanden aussuchen kann. Wie bekomme ich das hin, dass die angewählten in dem Formular "Anwesende" und alle nicht ausgewählten automatisch in die "Abwesenden" rutschen? Vielleicht habt ihr auch eine bessere, einfachere und schönere Lösung im Kopf, darüber würde ich mich natürlich auch sehr freuen. Die Beispieldatei mit ganz anderen Namen (aus datenschutzrechtlichen Gründen) habe ich natürlich angehangen. Habt schonmal ganz ganz lieben Dank für euer Engagement, Zeit und Interesse.
eventuell kannst Du auch statt des Userforms Auswahlfeldern (Dropdown, Gültigkeit) nehmen. Mit etwas Geschick könntest Du die Auswahlfelder so gestalten, dass gewählte Namen nicht mehr wählbar sind.
Ich habe hier in Spalte A die Auswahl und in Spalte C alle Namen. In D lasse ich alle Namen der Spalte C anzeigen, die noch nicht in Spalte A gewählt wurden. Da sich die Gültigkeit auf Spalte D bezieht, ist hier im Beispiel der Otto nicht mehr wählbar.
Arbeitsblatt mit dem Namen 'Tabelle1'
A
B
C
D
E
1
Otto
Willi
Willi
2
Bald
Bald
3
Otto
4
Kar
Kar
Zelle
Formel
E1
=WENN(ZÄHLENWENN($A$1:$A$4;D1);"";D1)
E2
=WENN(ZÄHLENWENN($A$1:$A$4;D2);"";D2)
E3
=WENN(ZÄHLENWENN($A$1:$A$4;D3);"";D3)
E4
=WENN(ZÄHLENWENN($A$1:$A$4;D4);"";D4)
Zelle
Gültigkeitstyp
Operator
Wert1
Wert2
A1
Liste
=$E$1:$E$4
A2
Liste
=$E$1:$E$4
A3
Liste
=$E$1:$E$4
A4
Liste
=$E$1:$E$4
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
das wird wohl nur in Excel so komfortabel gehen In Word läuft es wirklich auf eine Lösung mit VBA hinaus
hat zwar nix direkt mit der Fragestellung zu tun - aber hier mal ein interessanter Link zu einer Lösung für abhängige Dropdown in Word. https://www.extendoffice.com/documents/w...lists.html Vielleicht kann man das auch so abändern, dass bei Auswahl die Liste um das gewählte Element gekürzt wird.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
ioch habe es nun mal selber probiert und folgendes programmiert:
Code:
Option Explicit
Private Sub CheckBox8_Click() If CheckBox8 = True Then CheckBox1 = True CheckBox2 = True CheckBox3 = True CheckBox4 = True CheckBox5 = True CheckBox6 = True CheckBox7 = True End If End Sub
Private Sub CommandButton1_Click() Dim Teilnehmer As String Dim Abwesend As String
If CheckBox1 = True Then Teilnehmer = Teilnehmer & "TM 1" & ", " Else Abwesend = Abwesend & "TM 1" & ", " End If If CheckBox2 = True Then Teilnehmer = Teilnehmer & "TM 2" & ", " Else Abwesend = Abwesend & "TM 2" & ", " End If If CheckBox3 = True Then Teilnehmer = Teilnehmer & "TM 3" & ", " Else Abwesend = Abwesend & "TM 3" & ", " End If If CheckBox4 = True Then Teilnehmer = Teilnehmer & "TM 4" & ", " Else Abwesend = Abwesend & "TM 4" & ", " End If If CheckBox5 = True Then Teilnehmer = Teilnehmer & "TM 5" & ", " Else Abwesend = Abwesend & "TM 5" & ", " End If If CheckBox6 = True Then Teilnehmer = Teilnehmer & "TM 6" & ", " Else Abwesend = Abwesend & "TM 6" & ", " End If If CheckBox7 = True Then Teilnehmer = Teilnehmer & "TM 7" & ", " Else Abwesend = Abwesend & "TM 7" & ", " End If
If CheckBox9 = True Then Teilnehmer = Teilnehmer & "TM 8" & ", " End If If CheckBox10 = True Then Teilnehmer = Teilnehmer & "TM 9" & ", " End If If CheckBox11 = True Then Teilnehmer = Teilnehmer & "TM 10" & ", " End If If CheckBox12 = True Then Teilnehmer = Teilnehmer & "TM 11" End If
ReplaceBookmarkText(ActiveDocument, "Anwesende") = Teilnehmer ReplaceBookmarkText(ActiveDocument, "Abwesende") = Abwesend Unload Me
End Sub
Public Property Get ReplaceBookmarkText(oDoc As Document, strBMName As String) As String Dim rng As Range If oDoc.Bookmarks.Exists(strBMName) Then ReplaceBookmarkText = oDoc.Bookmarks(strBMName).Range.Text Else ReplaceBookmarkText = "" End If
End Property
Property Let ReplaceBookmarkText(oDoc As Document, strBMName As String, strText As String) Dim rng As Range If oDoc.Bookmarks.Exists(strBMName) Then Set rng = oDoc.Bookmarks(strBMName).Range rng.Text = strText oDoc.Bookmarks.Add strBMName, rng End If End Property
Nun muß ich es noch hinbekommen, daß ich am Ende des Strings die letzten zwei Zeichen lösche.