2010-11-19 5 views

Répondre

3
var isExecuted = false 
for each element in sarray 
    if ... then 
    if Not isExecuted Then 
     --do stuff 
     isExecuted = true 
    end if 
    end if 
next element 
+1

Si c'est tout ce que la boucle a à faire, alors ajoutez «Exit For» comme la dernière ligne de la routine do stuff. – ForEachLoop

2
flag = true 
For each ... 
    if flag 
     do whatever with first element 
     flag = false 
    endif 
    do what you want with all elements ... including the first 
next 
2

Il y a probablement une meilleure façon de le faire, mais vous pouvez avoir une first_time variable booléenne qui commencera comme vrai et préparez-vous à false dans l'instruction if. Vous pouvez ensuite vérifier

If first_time = True Then 
    Stuff 
End If 
+0

ce n'est pas vba, n'est-ce pas? –

+0

C'était plus comme un pseudo-code, la logique est la même ... – user472875

+0

@belisarius: En fait, c'est le seul morceau de code VBA jusqu'ici dans cette question. Votre volonté ne compilera pas. Pas plus que @ CDeutsch. – GSerg

2

Si je vous comprends bien, vous avez des éléments N, et que vous voulez effectuer une opération que pour le premier élément. Donc, faire ce que vous voulez faire, c'est perdre du temps processeur.

Donc, je suggère de réécrire votre logique sans introduire une nouvelle variable booléenne. C'est plus propre et plus rapide. Quelque chose comme ceci par exemple:

Dim intCount As Integer  

If (some condition) Then 
    DoSomething with sarray(0) 
For intCount = 1 To sarray.Length 
    //Do something 
Next intCount 
+0

Ce n'est pas le premier objet du tableau, c'est le premier qui satisfait la condition. Que se passe-t-il si sarray (5) est le premier pour lequel la condition If est True? – user472875

+1

Vous supposez que c'est le premier élément qui satisfait la condition, mais pour être honnête tout peut être mis entre si ... alors, et puisque l'utilisateur n'a pas dit quelle condition est vraiment là, je pense que ma réponse reste valide. – Wodzu

Questions connexes