VBA: Userform initialize-Methode nicht getroffen wird, wenn die userform initialisiert
Mein Modul-code den Aufruf der userform:
PreInfo.Show
Meine userform code:
Public Sub PreInfo_Initialize()
Dim Invoice, Name, Model, Crank, MyValue1, StrokeL As Variant
'Dim ListBox1 As ListBox
Dim c As Range
Dim oneControl As Object
'Empty Text Boxes and Set Focus
For Each oneControl In PreInfo.Controls
Select Case TypeName(oneControl)
Case "TextBox"
oneControl.Text = vbNullString
'Case "ListBox"
'oneControl.AddItem "Test"
End Select
Next oneControl
With lbTest
.AddItem Item:="2 Cylinders" '3 different syntax used as test to isolate issue
.AddItem "3 Cylinders"
.AddItem ("5 Cylinders")
End With
Invoice.TextBox.SetFocus 'Activate?
End Sub
Mein Modul code nicht auslösen meine userform initialize-sub, daher nichts in dieses sub läuft. Ich kann nicht herausfinden, warum dies geschieht. Ich würde mich sehr über jede Hilfe!!!
Wenn dieser code ausgeführt wird, die userform öffnet sich, jedoch keine der listbox-Elemente Hinzugefügt werden
Haben Sie zuvor verwendet
Ich benutze userform.ausblenden wenn der Benutzer klickt auf den "weiter" - button auf der userform, wird die userform geschlossen und drucken der userform-Eingaben in ein Arbeitsblatt.
UserForm.hide
?Ich benutze userform.ausblenden wenn der Benutzer klickt auf den "weiter" - button auf der userform, wird die userform geschlossen und drucken der userform-Eingaben in ein Arbeitsblatt.
InformationsquelleAutor Alex Barrie | 2013-06-05
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Userform_Initialize-Ereignis wird ausgelöst, indem Sie eine Zeile wie diese genannt, die in ein Modul:
Damit es erneut ausgelöst werden, müssen Sie zum entladen der userform (also nicht nur ausblenden). Diese kann getan werden, entweder nach dem laden aufrufen innerhalb des Moduls:
Oder irgendwo in der Userform code:
Feststellen, dass die Ereignisse Initialisieren und QueryClose - wird ausgelöst durch die Entladen nennen (QueryClose - wird auch ausgelöst, wenn die Schaltfläche schließen in der oberen rechten Ecke gedrückt wird), damit ich auch wirklich empfehlen, Sie von der Nutzung Initialisieren. Stattdessen, Nach der Laden nennen, fügen Sie den initialize-code innerhalb des gleichen Moduls (oder erstellen Sie eine separate sub, wenn Sie gerufen werden von mehreren stellen).
Nicht zuletzt, wenn Sie mit einem Ungebunden form (let ' s code im hintergrund ausgeführt werden, und zeigt gleichzeitig), benötigen Sie die Aktivieren - Ereignis wird der code ausgeführt. Die event-Reihenfolge ist:
InformationsquelleAutor FCastro
Ich hatte das gleiche problem, und fand eine sehr einfache Lösung.
In Ihrem Fall, anstelle der Verwendung
verwenden
InformationsquelleAutor Sam Lucas
Was ist happenening, ist, dass deine userform ist nie aus dem Speicher entladen.
Hide
nur entfernt Sie aus der Ansicht.Dies bedeutet, dass es nur dann initialisiert, wenn Sie das erste mal ausführen der userform in das Excel-Instanz.
Können Sie verhindern dies, indem Sie
oder
statt
UserForm.Hide
je nach deinem anderen code. Sie könnten auch potenziell verwenden Sie dieUserForm_Activate
Methode stattUserForm_Initialize
Methode.Um das Listenfeld zu füllen, verwenden Sie:
etc außerhalb der
With
- Anweisung.Ich code Hinzugefügt, der löst das problem. Wenn der obige code nicht funktioniert, setzen Sie einen Haltepunkt dort und sehen Sie, wenn Ihr code ruft auch in diese Methode.
Verändert den code (gleiche Ergebnis). Zusätzlichen Haltepunkt am code (Programm läuft weiter über diesen Punkt, ohne dass der Haltepunkt). Es ist, als ob die userform.Karte funktioniert, aber nicht Auslöser der userform_activate sub.
und nur um klar sein, Sie haben diesen code in den code deiner UserForm?
Ja, dieses Projekt hat ein Modul und zwei userforms (dieser Schwierigkeiten ist die erste. die zweite ist nur textbox und arbeitet als benötigt). Userform.show ist eine der ersten Zeilen in meinem Modul, der rest der obige code innerhalb der userform, im userform_activate() sub. es ist eine öffentliche sub.
InformationsquelleAutor enderland
Ich habe es herausgefunden. Lange Rede kurzer Sinn, mein Modul benötigt die folgenden code:
welche Signale die userform zu aktivieren, bevor es geöffnet wird (calling "initialisieren", dann zeigt die userform für die user zu ändern).
Userform.Show cue diese Aktivierung sub zu laufen, aber mir war nicht aus welchem Grund auch immer. Dies behebt das Problem, bis ich feststellen warum Userform.Userform_Activate nicht genannt wurde, wie es hätte sein sollen.
InformationsquelleAutor Alex Barrie
haben Sie zu halten, syntax UserForm_Initialize() es geschehen zu lassen
Cheers
InformationsquelleAutor Iu To