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.