2010-11-19 3 views

답변

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

루프가 수행해야하는 경우 do stuff 루틴의 마지막 행으로 'Exit For'를 추가하십시오. – 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

아마이 일을 더 나은 방법이있다 그러나 당신은 참으로 밖으로 시작되고 if 문에서 false로 설정 얻을 부울 변수 first_time을 가질 수 있습니다. 그런 다음 내가 제대로 이해 경우 N 요소를 가질

If first_time = True Then 
    Stuff 
End If 
+0

그건 vba가 아니지? –

+0

그것은 의사 코드와 비슷했지만 논리는 동일합니다 ... – user472875

+0

@belisarius : 사실이 질문에 대한 VBA 코드의 유일한 부분입니다. 너는 컴파일되지 않을 것이다. @ CDeutsch도 마찬가지입니다. – GSerg

2

확인할 수 있습니다, 당신은 첫 번째 요소에 대한 몇 가지 작업을 수행합니다. 그래서 당신이 원하는 것은 프로세서 시간 낭비입니다.

그래서 새로운 부울 변수를 도입하지 않고 논리를 다시 작성하는 것이 좋습니다. 더 빠르고 깨끗합니다. 예를 들면 다음과 같습니다.

+0

배열의 첫 번째 객체가 아니며, 조건을 만족하는 첫 번째 객체입니다. sarray (5)가 If 조건이 참인 첫 번째 것이면 어떻게 될까요? – user472875

+1

당신은 그것이 조건을 만족시키는 첫 번째 요소라고 가정하지만 솔직히 말해서 ... then ... 그리고 사용자가 어떤 조건이 실제로 존재하는지 말하지 않았기 때문에 솔직히 말해서 내 대답은 유효하다고 생각합니다. – Wodzu

관련 문제