2016-12-08 4 views
0

Je suis un débutant à VBA face à un problème travail réel, j'ai un do-while de sortie de problème après avoir terminé la do-while interne (imbriquée).Comment sortir/sauter outter do-while après avoir terminé If-Then dans imbriquée (intérieure) do-while

* Le code fonctionne bien, il n'y a pas de problème, mais je veux savoir comment le rendre plus efficace par exit/skip outter do-while une fois que le interne if-then est apparié et ## est fait.

ici est ce que le code ressemble (FYI supprimer certains codes pour faciliter la lecture):

For Each w In Worksheets 
    If() Then 

     Do While (i) ' outter do-while 

      Do While() 'inner(nested/1st do-while) 
        If() Then 'match something here 

         ## do something here 

         Exit Do  'break the inner do-while 
        End If 

      Loop 

      i = i + 20 'question here!!how should I break outter do-while? 

     Loop      
    End If 
    Next w 

Donc, mon objectif est qu'une fois if-then est adapté et ## contenu est fait, comment Est-ce que je pourrais directement aller à "prochain w", aka sauter à la prochaine feuille de travail?

J'ai essayé « goto + ligne », mais il ne fonctionne pas, est-il une autre façon?

+0

ajouter 'variable' supplémentaire de type' boolean'. Définissez-le 'true' dans' la boucle interne if statement'. Ensuite, dans la boucle externe, vérifiez si 'variable = true' et si c'est le cas, appelez' exit do' pour la boucle externe. –

+0

merci Kazi! C'est très utile !! – leveygao

Répondre

1

vous pouvez essayer quelque chose comme ceci:

Dim exitLoop As Boolean '<--| default initial value is 'False' 

For Each w In Worksheets 
    If() Then 

     Do While (i) And Not exitLoop ' outer do-while 

      Do While() and Not exitLoop 'inner(nested/1st do-while) 
        If() Then 'match something here 

         ## do something here 

         exitLoop = True 
         Exit Do  'break the inner do-while 
        End If 

      Loop 

      i = i + 20 'question here!!how should I break outter do-while? 

     Loop 
     exitLoop = False '<--| set back default value 
    End If 
Next w