VBA: Userform méthode initialize de ne pas être touché lorsque l'objet userform initialise
Mon module de code à l'appel de l'objet userform:
PreInfo.Show
Mon 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
Mon module de code de ne pas déclencher mon userform initialiser les sous, donc pas de sous fonctionne. Je ne peux pas comprendre pourquoi cela se passe. J'apprécierais toute aide!
Lors de l'exécution de ce code, objet userform s'affiche, cependant, aucun de la liste des éléments sont ajoutés
Avez-vous déjà utilisé
J'utilise de l'objet userform.cacher lorsque l'utilisateur clique sur le bouton "continuer" sur l'objet userform, qui ferme l'objet userform et imprime l'objet userform entrées dans une feuille de calcul.
UserForm.hide
?J'utilise de l'objet userform.cacher lorsque l'utilisateur clique sur le bouton "continuer" sur l'objet userform, qui ferme l'objet userform et imprime l'objet userform entrées dans une feuille de calcul.
OriginalL'auteur Alex Barrie | 2013-06-05
Vous devez vous connecter pour publier un commentaire.
Événement Userform_Initialize est déclenchée par une ligne comme celle-ci est appelée dans un module:
Pour être déclenché de nouveau, vous aurez besoin de décharger l'objet userform (et non pas simplement le cacher). Cela peut être fait soit après la charge d'appel au sein du module:
Ou n'importe où à l'intérieur de l'objet Userform code:
Remarquer que les événements Initialiser et QueryClose sera déclenché par le Décharger appeler ainsi (QueryClose est également déclenchée lorsque le bouton fermer dans le coin supérieur droit est enfoncé), donc je vous recommande vraiment de vous abstenir d'utiliser Initialiser. Au lieu de cela, Après la Charge appel, ajouter l'initialiser le code dans le même module (ou créer un sous si ça va être appelée à partir de plusieurs endroits).
Dernier mais non le moindre, si vous exécutez un non Modale formulaire (code de s'exécuter en arrière-plan tout en montrant), vous aurez besoin d'utiliser la Activer cas pour le code à exécuter. La séquence d'événements est:
OriginalL'auteur FCastro
J'ai eu le même problème et trouvé une solution très simple.
Dans votre cas, au lieu d'utiliser
utilisation
OriginalL'auteur Sam Lucas
Qu'est-ce que happenening est que votre userform n'est jamais déchargé de la mémoire.
Hide
supprime uniquement de la vue.Cela signifie qu'il n'est initialisé la première fois que vous exécutez l'objet userform à l'intérieur de cette instance d'Excel.
Vous pouvez éviter cela en utilisant
ou
au lieu de
UserForm.Hide
en fonction de votre code. Vous pouvez aussi éventuellement utiliser leUserForm_Activate
méthode au lieu deUserForm_Initialize
méthode.Pour remplir la zone de liste, utilisez:
etc en dehors de la
With
déclaration.J'ai ajouté le code qui résout ce problème. Si le code ci-dessus ne fonctionne pas, mettre un point d'arrêt là-bas et voir si votre code devient encore dans cette méthode.
Modifié le code (même résultat). Ajout du point d'arrêt dans le code (programme se prolonge au-delà de ce point sans déclenchement du point d'arrêt). C'est comme si l'objet userform.montrer des oeuvres, cependant, ne déclenchent pas le sub userform_activate.
et juste pour être clair, vous avez ce code dans le code associé à votre UserForm?
Oui, ce projet a qu'un seul module et deux userforms (ce problème étant la première. le second est la seule zone de texte et travaille en tant que de besoin). Objet Userform.show est l'une des premières lignes dans mon module, le reste du code ci-dessus est à l'intérieur de l'objet userform, à l'intérieur de la userform_activate() sub. c'est un public sub.
OriginalL'auteur enderland
J'ai pensé à elle. Longue histoire courte, mon Module nécessaire le code suivant:
qui signale le userform pour l'activer avant de l'ouvrir (l'appel de "initialiser", puis en montrant l'objet userform pour l'utilisateur de modifier).
Objet Userform.Spectacle de repère de cette activation des sous à diriger, mais la mienne n'a pas été pour quelque raison que ce soit. Cela résout le problème jusqu'à ce que je déterminer la raison de l'objet Userform.Userform_Activate n'a pas été appelé comme il aurait fallu.
OriginalL'auteur Alex Barrie
vous devez garder la syntaxe UserForm_Initialize() pour y arriver
Acclamations
OriginalL'auteur Iu To