Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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
Listbox Einträge durch Checkbox löschen
16.10.2019 11:06:46
Faton
Hallo liebe Community,
könnt Ihr mir bitte weiterhelfen.
Ich möchte wenn eine Checkbox den Wert Value = True hat, eine Listbox befüllen.
Das funktioniert auch. Jedoch möchte ich das wenn der wert wieder auf False gesetzt wird das die eingefügten Einträge entfernt werden.
Ich bekomme bei diesem Code eine Fehlermeldung.

Private Sub chk_igm_Click()
If chk_igm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Kalkulation (IGM)"
.AddItem "Flächenaufnahme"
.AddItem "Reinigung (+24 restliche PP)(IGM)"
.AddItem "sonstiges (IGM)"
.AddItem "Qualitätsmanagement (IGM)"
.AddItem "IT / CAFM (IGM)"
.AddItem "Nachunternehmer (IGM)"
.AddItem "Projektsteuerung (IGM)"
.AddItem "Operations (IGM)"
.AddItem "HSEQ (IGM)"
End With
Else
With UserForm1.lst_tasks
.RemoveItem "Kalkulation (IGM)"
.RemoveItem "Flächenaufnahme"
.RemoveItem "Reinigung (+24 restliche PP)(IGM)"
.RemoveItem "sonstiges (IGM)"
.RemoveItem "Qualitätsmanagement (IGM)"
.RemoveItem "IT / CAFM (IGM)"
.RemoveItem "Nachunternehmer (IGM)"
.RemoveItem "Projektsteuerung (IGM)"
.RemoveItem "Operations (IGM)"
.RemoveItem "HSEQ (IGM)"
End With
End If
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox Einträge durch Checkbox löschen
16.10.2019 11:10:52
Daniel
Hi
wenn du die Listbox komplett leeren willst, recht der Befehl
UserForm1.lst_tasks.Clear
wenn du mit .RemoveItem ein Element aus der Listbox entfernen willst, musst du die Indexnummer der zu löschenden Listboxzeile angeben, also .RemoveItem 0
beachte, dass nach dem Löschen einer Zeile die nachfolgenden Zeilen nachrücken.
gruß Daniel
AW: Listbox Einträge durch Checkbox löschen
16.10.2019 11:22:46
Faton
Das Problem ist nur das ich mehrere Checkboxen habe. Durch jeden Checkbox(true) werden Werte in die Listbox eingetragen. Wenn ich das mit dem Clear mache, dann löscht er alle Werte aus der Listbox. Ich wollte eine Lösung finden, das nur die Werte in der Listbox gelöscht werden die zu der jeweiligen Checkbox gehören. Vielen Dank :)
Private Sub chk_igm_Click()
If chk_igm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Kalkulation (IGM)"
.AddItem "Flächenaufnahme"
.AddItem "Reinigung (+24 restliche PP)(IGM)"
.AddItem "sonstiges (IGM)"
.AddItem "Qualitätsmanagement (IGM)"
.AddItem "IT / CAFM (IGM)"
.AddItem "Nachunternehmer (IGM)"
.AddItem "Projektsteuerung (IGM)"
.AddItem "Operations (IGM)"
.AddItem "HSEQ (IGM)"
End With
Else:
With UserForm1.lst_tasks
.RemoveItem "Kalkulation (IGM)"
.RemoveItem "Flächenaufnahme"
.RemoveItem "Reinigung (+24 restliche PP)(IGM)"
.RemoveItem "sonstiges (IGM)"
.RemoveItem "Qualitätsmanagement (IGM)"
.RemoveItem "IT / CAFM (IGM)"
.RemoveItem "Nachunternehmer (IGM)"
.RemoveItem "Projektsteuerung (IGM)"
.RemoveItem "Operations (IGM)"
.RemoveItem "HSEQ (IGM)"
End With
End If
End Sub
Private Sub chk_kgm_Click()
If chk_kgm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Verwaltung Mietflächen (KGM)"
.AddItem "CoC (KGM)"
.AddItem "Qualitätsmanagement (KGM)"
End With
End If
End Sub
Private Sub chk_sonstiges_Click()
If chk_sonstiges.Value = True Then
With UserForm1.lst_tasks
.AddItem "Sonstiges"
End With
End If
End Sub

Userbild
Anzeige
AW: Listbox Einträge durch Checkbox löschen
16.10.2019 11:41:47
ede
Hallo Faton,
dann starte doch bei allen vier Sub checkbox-Click eine neue Sub, die dir die Listbox neu aufsetzt.
gruss
ede
Beispiel:

Private Sub chk_kgm_Click()
call refresh_Listbox
End Sub
Private Sub chk_sonstiges_Click()
call refresh_Listbox
End Sub
Private refresh_Listbox()
'erstlmal löschen
UserForm1.lst_tasks.Clear
'Je Checkbox neu aufsetzen
If chk_kgm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Verwaltung Mietflächen (KGM)"
.AddItem "CoC (KGM)"
.AddItem "Qualitätsmanagement (KGM)"
End With
End If
If chk_sonstiges.Value = True Then
With UserForm1.lst_tasks
.AddItem "Sonstiges"
End With
End If
end Sub

Anzeige
AW: Listbox Einträge durch Checkbox löschen
16.10.2019 11:56:55
Daniel
Hi Faton
ich würde mich dem Vorschlag von ede anschießen und bei jedem Klick auf eine Checkbox
die Listbox komplett löschen und neu aufbauen.
das hätte den Vorteil, dass die Reihenfolge der Elemente immer die gleiche ist.
so wie du es jetzt machst, hängt die Reihenfolge davon ab, in welcher Reihenfolge du die Checkboxen anklickst.
ist die Frage, ob das so gewünscht ist.
ich würde dann auch statt der Chekcboxen auch wieder eine Multiselect-Listbox verwenden, so dass du mit einem Makro auskommst und nicht 4 benötigst.
die andere alternative wäre, dass du die Listbox 2-spaltig machst (die zweite Spalte kannst du ja ausblenden) und in der zweiten Spalte die jeweilige Gruppe hinterlegst.
dann kannst du mit einer Schleife über die Listbox gehen und diese zweite Spalte abfragen, ob die jeweilige Zeile gelöscht werden muss.
also beispielsweise für "Sonstige":
for i = ListboxX.Listcount - 1 to 0 Step - 1
if ListboxX.List(i, 1) = "Sonstige" then ListboxX.RemoveItem i
Next

Anzeige
AW: Listbox Einträge durch Checkbox löschen
16.10.2019 12:44:14
Faton
Vielen vielen Dank!
Es funktioniert.
Ich füge den Code hier ein, falls jemand ihn braucht.
Muss ich diesen Beitrag irgendwo schließen?
Private Sub chk_tgm_Click()
Call refresh_Listbox
End Sub
Private Sub chk_igm_Click()
Call refresh_Listbox
End Sub
Private Sub chk_kgm_Click()
Call refresh_Listbox
End Sub
Private Sub chk_sonstiges_Click()
Call refresh_Listbox
End Sub

Private Sub refresh_Listbox()
'erstlmal löschen
UserForm1.lst_tasks.Clear
'Je Checkbox neu aufsetzen
If chk_tgm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Anlagenaufnahme (TGM)"
.AddItem "HSEQ (TGM)"
.AddItem "Human Ressources (TGM)"
.AddItem "IT / CAFM System (TGM)"
.AddItem "Operations (TGM)"
.AddItem "Energiemanagement (TGM)"
.AddItem "Kalkulation (TGM)"
.AddItem "Qualitätsmanagement (TGM)"
.AddItem "Nachunternehmer (TGM)"
.AddItem "Projektsteuerung (TGM)"
.AddItem "Gewährleistungsmanagement (TGM)"
End With
End If
If chk_igm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Kalkulation (IGM)"
.AddItem "Flächenaufnahme"
.AddItem "Reinigung (+24 restliche PP)(IGM)"
.AddItem "sonstiges (IGM)"
.AddItem "Qualitätsmanagement (IGM)"
.AddItem "IT / CAFM (IGM)"
.AddItem "Nachunternehmer (IGM)"
.AddItem "Projektsteuerung (IGM)"
.AddItem "Operations (IGM)"
.AddItem "HSEQ (IGM)"
End With
End If
If chk_kgm.Value = True Then
With UserForm1.lst_tasks
.AddItem "Verwaltung Mietflächen (KGM)"
.AddItem "CoC (KGM)"
.AddItem "Qualitätsmanagement (KGM)"
End With
End If
If chk_sonstiges.Value = True Then
With UserForm1.lst_tasks
.AddItem "Sonstiges"
End With
End If
End Sub

Anzeige
alles gut, Danke für die Rückmeldung o.T.
16.10.2019 15:29:06
ede
.

20 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige