Öffnen von UserForm aus userform über und über - Ursachen-Objekt-Probleme
Ich derzeit haben ein eingebautes tool in Excel 2003, die zeigt eine Reihe von Formularen zur Dateneingabe. Der client angefordert hat, dass es "Bisherigen Form" und "Weiter Bilden" - buttons auf den Formularen.
Den code verwendet, um zwischen den Formen ist wie folgt
Sub NextForm(strFormName As String)
Dim intCurPos As Integer
Dim strNewForm As String
'Find out which form we are currently on from a list in a range
intCurPos = WorksheetFunction.Match(strFormName, Range("SYS.formlist"), 0)
If intCurPos = WorksheetFunction.CountA(Range("SYS.formlist")) Then
'We want to use the first one
intCurPos = 0
End If
'Get the name of the form to open
strNewForm = WorksheetFunction.Index(Range("SYS.formlist"), intCurPos + 1)
'Load the form into the Userforms Collection
Set newForm = VBA.UserForms.Add(strNewForm)
'Show the form
newForm.Show
End Sub
Das Problem, das ich habe, ist, dass nachdem Sie dies 25-mal (jaja ich weiß) das system stürzt ab. Mir ist klar, dass dies ist, weil jedes mal, wenn Sie bekommen, um die newForm.Show line oben den code nicht bekommen, komplett und so sitzt im Speicher.
Nicht-modale Formulare aufhören würde zu diesem Thema aber dann könnte der Benutzer laden Sie andere Formen und andere Dinge zu tun, die würden große Probleme entstehen.
Hat jemand irgendwelche Vorschläge haben, um zu helfen mit diesem? Irgendwie zu zwingen, die Ausführung von code, aber nicht aufhören, den modal Fähigkeit des Formulars?
Long shot, aber jede Hilfe dankbar.
Haben Sie sich überlegt mit dem Multiseiten-Steuerelement auf deiner userform, d.h. laden einer userform und verwenden Sie Weiter und Zurück zum Blättern durch die Registerkarten auf dem Multiseiten -...
Jede form entlädt, bevor der nächste geöffnet wird. Jedoch ist der code, der Punkt, an dem die Verarbeitung beendet für die Form 1 bleibt im Speicher, und so weiter für die anderen 24. Es ist nur, wenn das Letzte Formular geschlossen wird, Excel geht zurück, um den code auszuführen (in diesem Fall ist nur ein Exit Sub).
Wir waren mit diesem. Wir waren zwei Formen (es gibt zwei Sätze von separaten Daten -) aber es waren zu viele Kontrollen, Excel das laden der Formulare. Die eine form war die 161 Felder x 10 steuert. Der andere war 95 x 10 steuert. Excel hatte einen Spieß, so dass wir aufgeteilt in fünf Formen. Wir tatsächlich verwenden Sie ein multiseiten-Steuerelement auf jede dieser Formen. Es sind 32 Seiten, die in Summe über die fünf Formen.
InformationsquelleAutor Nick Perkins | 2010-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vielleicht sollten Sie Ihr Konzept zu ändern.
Ich würde Folgendes vorschlagen:
Im Hauptprogramm eine Schleife verwenden, um den Zyklus öffnen Sie die form und die Schleife jedes mal, wenn der Benutzer die Taste "Nächstes Formular" - button.
In jeder form, erklären:
In jedem "Weiter Bilden" - Taste, geben Sie etwas wie:
Ändern Sie Ihre sub eine Funktion, die delievers die nächste Form Name
Müssen Sie auch ändern Sie Ihr O. K. zu blenden Sie einfach das Formular anstelle von entladen und Einstellung, die CloseStatus zu wahren.
Die Idee ist, Steuern Sie alle Ihre Formulare laden/entladen von außerhalb der aus einem einzigen Verfahren.
Hoffe, es ist klar genug.
Danke. Das sieht wie ein guter start. Ich werde das tun, bis ein Testfall, um zu sehen, wie es geht, aber ich kann nicht sehen, ein problem aus einem anfänglichen Blick.
Erstens, danke für dieses. Ich habe diese in einem test-Fall, und es funktioniert wie es sollte. Genial. Ein Hinweis für diejenigen, die kommen, um diese später - im btnNextForm_Click, die CloseStatus=True sollte CloseStatus=False. Möchten Sie nur eingestellt CloseStatus=True, wenn Sie nicht mehr wünschen, um jegliche Formen. Prost 🙂
Schön zu hören, dass es geholfen hat. Ich bearbeitet meine post spiegeln die CloseStatus=False. Vielen Dank für das feedback
InformationsquelleAutor CaBieberach