donné mon exigence est si cmd = "one" code> j'ai besoin
"un"
et ensuite
"deux " code> affiché mais je reçois actuellement
" Un " code> affiché, puis le programme sort de la case Sélectionner ... p> p>
8 Réponses :
Select Case cmd case "ONE", "TWO": if cmd = "ONE" THEN MsgBox "one" end if MsgBox "two" case "THREE": MsgBox "three" End select
J'essaie d'aider monsieur, corrigé.
Certains si puissent faire le travail:
If cmd = "ONE" Then MsgBox "one" cmd = "TWO" End If If cmd = "TWO" Then MsgBox "two" cmd = "THREE" End If If Cmd = "THREE" Then MsgBox "three" End If
Belle solution de contournement! Je serais recommandé cela comme la réponse :)
c'est-à-dire par conception. http://msdn.microsoft.com/fr- US / Bibliothèque / EE177199% 28Prot.10% 29.aspx P>
Vous pouvez essayer d'utiliser des appels «goto» ou de procédure pour vous déplacer. P>
Amende! Puis-je faire quelque chose comme entrer la case "One": faire du traitement, puis dire "deux" ou ajouter une étiquette sous le cas "Deux" relevé.
Oui, mais ce serait vraiment laid et très difficile à déboguer (et quiconque héritant le code ne sera pas content d'avoir à la mauvaise herbe à travers le "code spaghetti").
Vous devrez juste le faire le long chemin.
Select Case cmd case "ONE": MsgBox "one" MsgBox "two" MsgBox "three" case "TWO": MsgBox "two" MsgBox "three" case "THREE": MsgBox "three" End select
Pourquoi utiliser un cas de sélection pour cela? Tout ce que vous faites est d'imprimer la version minuscule de toute valeur 'cmd' est.
If cmd = "ONE" Then MsgBox LCase$(cmd) MsgBox "two" Else Msgbox LCase$(cmd) End If
En fait, j'ai montré des minuscules juste à des fins descriptives, pratiquement, il y aura du code écrit dans ces cas..et la condition que je souhaite, c'est si le programme entre par le biais de CMD = "un", il devrait exécuter un certain code dans "un" et Ensuite, tombez-vous à «Deux» ...
goto fonctionnerait bien, je pense.
Select Case cmd Case "ONE" MsgBox "one" GoTo AfterONE: Case "TWO" AfterONE: MsgBox "two" Case "THREE" MsgBox "three" End Select
J'ai aussi eu ce problème récemment.
J'ai trouvé la solution la plus lisible et la plus achète était de créer une machine à états de base. p>
Tout simplement envelopper le Sélectionnez CODE> Dans un
pendant code> et mettre fin à chaque cas avec quel cas est suivant. p>
'TOWN à travers' dans un cas non vide est une grande source d'erreurs en C / C ++, donc non mise en œuvre dans la plupart des autres langues (y compris VBA). Donc, comme indiqué ailleurs, faites-le très bien et envisagez des appels de procédure pour éviter les doubles emplois.
Cependant, si comme moi, vous avez fini sur cette page parce que vous ne pouviez pas vous souvenir de faire vide strong> Drop-travers, puis une légère variation de la réponse acceptée est que vous pouvez (comme avec toutes les commandes de VBA), utilisez un soulignement pour désigner la suite sur la ligne suivante: P> Select Case cmd
Case "ONE", _
"TWO":
if cmd = "ONE" Then MsgBox "one"
MsgBox "two"
Case "THREE":
MsgBox "three"
End select
Je pense i> c'est par conception; Le code saute automatiquement à la fin après la dernière instruction dans l'affaire. Vous devrez programmer l'entourage (en utilisant des procédures, par exemple) à la place.
@Gratzy: Si cmd = "Deux", il devrait être par défaut pour imprimer "deux" et sortir ... Je suppose que c'est le comportement par défaut dans VBA. Je pense que VBA ajoute implicitement des déclarations "pause" après chaque cas, que je veux dériver.