Restreindre les entrées de zone de texte dans Excel UserForm
Je suis en train de construire un objet UserForm en VBA Excel pour la simple saisie de données (enquêtes). Les sondages sont à la base de "Fortement en Désaccord" à "Fortement d'Accord" format. Chaque répondant a 8 options par question ("1"-"5" pour le contrat de classement, "99" N/A", et "88" si le défendeur choisissez de ne pas répondre). Pour améliorer la vitesse et la précision du processus de saisie de données, j'ai besoin de mon UserForm pour n'autoriser uniquement les entiers dans les zones de texte.
J'ai foiré autour avec une pression de Touche, mais ont rencontré quelques problèmes avec le à deux chiffres des entrées. Voici ce que j'ai eu:
Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("1") To Asc ("5")
Case Asc("88")
Case Asc("99")
Case Else
KeyAscii = 0
End Select
End Sub
Cela fonctionne bien, sauf qu'il n'est pas parfait, qu'il permet aussi à des entrées invalides, tels que, "11" - "15", "81" - "85", et ainsi de suite. J'ai passé deux bonnes semaines à la recherche autour de l'internet pour quelque chose et n'ai pas trouvé quoi que ce soit. Il y a sûrement un moyen simple de valider ces zones de texte de la façon dont je me demande, mais je n'arrive pas à le comprendre. Toute aide serait grandement appréciée.
Laissez-moi savoir si quelqu'un a besoin de plus de code. Merci d'avance pour votre aide.
Vous devez vous connecter pour publier un commentaire.
Il suffit de cocher la valeur lorsqu'ils quittent le champ de
Voici une solution qui utlizes le bouton soumettre pour valider (commandbutton1), par vos derniers commentaires. Dans la méthode click il parcourt des contrôles et des vérifications pour voir si c'est une zone de texte, si il passe à la zone de texte pour être validé. Si la validation échoue il va mettre le focus au contrôle, vous voudrez peut-être ajouter une boîte de message, de sorte que l'utilisateur sait qu'il a échoué.
Si c'était moi, je voudrais utiliser les zones de liste modifiables avec le choix restreint à votre liste. Pour une démo, mettre une ou deux zones de liste modifiables sur un formulaire et en l'ajoutant à son code:
EDIT: Ajout de "Sélectionner Une" ligne ci-dessus par la conversation dans les commentaires.
EDIT 2: Ajout d'un exemple de code pour faire la distinction entre deux types de
ComboBoxes
- cboType1 et cboType2. Nom de votre ComboBoxes avec l'un de ces deux préfixes et le code de les remplir correctement. Notez qu'il existe d'autres façons de le faire, par exemple, avec la zone de liste déroulante duTag
de la propriété. Le point est d'être capable de les distinguer dans le code..ListIndex = -1
?1(Strongly Disagree)
et valider sur le bouton "soumettre" si l'utilisateur a sélectionné les valeurs de tous. 🙂 Mais comme vous l'avez dit, l'OP a pour bricoler...Mon code que l'extension de Doug Glancys suggestion.
La solution utilise le tag de la propriété de chacune des zones de texte.