2016-11-01 6 views
-2

Ich habe ein Benutzerformular, das ich mit VBA in Excel erstelle. Ich habe eine Zeile, die ungefähr 10 Kombinationsfelder und 5 Textfelder enthält. Die Daten und Auswahlen, die in diese Felder eingegeben werden, werden für andere Berechnungen an anderer Stelle verwendet. Der Benutzer kann so viele zusätzliche Zeilen hinzufügen, wie erforderlich sind. Wenn eine neue Zeile erstellt wird, erstellt die Klasse die Steuerelemente während der Initialisierung und fügt sie dem Benutzerformular hinzu. Alle Ereignisse werden auch in der Klasse für die Instanz behandelt.Konnte keine Klasse entfernen, die Steuerelemente für Benutzerformular enthält

Das oben beschriebene funktioniert soweit ich es getestet habe (obwohl es vielleicht einen besseren Weg gibt). Das Problem, das ich habe, ist, wenn ich versuche, irgendwelche der Reihen zu löschen, die addiert werden. Ich habe eine Schaltfläche auf dem Benutzerformular und ich habe mehrere verschiedene Möglichkeiten ausprobiert, aber ohne Erfolg (Ich habe auch versucht, dieses Problem zu suchen, aber habe nichts spezifisch genug gefunden, um mein Problem zu helfen). Die controls.remove-Methode scheint nicht zu funktionieren (obwohl die Steuerelemente alle zur Laufzeit hinzugefügt wurden). Ich habe verschiedene Versionen ausprobiert, indem ich den Code in die Klasse und andere in das Benutzerformular eingefügt habe.

Für einige zusätzliche Informationen habe ich eine globale Sammlung auf dem Benutzerformular erstellt, wo ich meine rowClass Objekte hinzufügen. In dieser Klasse erstelle und füge ich alle oben genannten Felder hinzu und benenne sie abhängig von der Reihenfolge, in der sie hinzugefügt wurden.

Ich denke, dass ich die Struktur des Codes ändern muss, so dass alle Schaltflächen aus dem Benutzerformular hinzugefügt werden und die Ereignisse bleiben in der Klasse (die Kombinationsfelder müssen gleich funktionieren, aber unabhängig voneinander sein) Reihen). Ich würde mich über jede Hilfe hier freuen!

Antwort

0

Die Syntax eine Steuerung von einem Benutzerformular zu entfernen ist:

Me.Controls.Remove sControlName 

Wo sControlName ein String-Variable ist, den Namen des Steuerelements enthält

Verwandte Themen