Entfernen Sie Dynamisch Hinzugefügten Controls von Userform
Ich habe eine excel-Userform dynamisch mit Checkboxen Hinzugefügt. Füge ich die Checkboxen schon früh mit code, der wie folgt aussieht:
Set chkBox = Me.Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
Später möchte ich entfernen Sie alle diese Kontrollkästchen. Ich versuche diesen code:
Dim j As Integer
'Remove all dynamically updated checkboxes
For Each cont In Me.Controls
For j = 1 To NumControls
If cont.Name = "Checkbox" & j Then
Me.Controls.Remove ("Checkbox" & j)
End If
Next j
Next cont
Bin aber immer folgende Fehlermeldung:
jegliche Hilfe würde sehr geschätzt werden.
- eines der Probleme hierbei könnte die paranthesese in " ("Checkbox" & j)"
- überprüfen Sie, zu welchem j es schlägt fehl, und überprüfen, ob dieses ist eine checkbox zur Laufzeit Hinzugefügt und NICHT im design-Modus
- Blick zurück, was wohl behoben, mein code war nicht der check, sondern der Ausfahrt, sobald Sie das richtige gefunden. @PatrickLepelletier ist wohl richtig, wahrscheinlich ist dieser Prüfung das falsche Kästchen. That being said, Chris ' code unten sollte das Problem beheben oder so.
- ich kam zurück zu diesem post, nur zu Fragen, warum ich nicht sehe es so: ich mache diese Dinge mit einem
On error resume next
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen besseren Ansatz zu verfolgen, der die Steuerelemente, die Sie erstellen (z.B. in einer Sammlung), und verwenden Sie diese, um Sie zu entfernen.
Diese Weise Ihr code ist nicht verpflichtet, den Namen format, und kann angewendet werden, um andere Arten der Kontrolle zu.
Vorausgesetzt, es gibt keine andere Steuerung beginnen im Namen mit "Markierungsfeld",
wenn Sie bereits wissen, den Namen der Steuerelemente, der Typ, und wie viele, warum Doppel-loop ?
beachten Sie, dass NUR die Steuerelemente, die zur Laufzeit angelegt werden können, entfernt.
und für Ihren Fall : "wenn alle Namen werden korrekt
Hinzufügen eines check für die Kontrolle schien dieses Problem zu beheben. Nicht ganz sicher warum, aber es funktioniert.
Ich schrieb den original-code mithilfe des Befehls " - Tasten, und nur Hinzugefügt, "Mir.Controls.Count" statt "NumControls" und definiert "Cont" als Kontrolle. Es scheint für mich arbeiten. Bitte lassen Sie mich wissen, wenn dies für Sie arbeitet:
-->