for each element in sarray
if ... then
if this is the first time the above IF statenent was executed ... then
end if
next element
첫 번째로 IF THEN
문이 실행될 때만 수행하고 싶습니다. 나는 내 논리에 많은 문제가있다. 도와주세요!vba : 각 루프에 대해 첫 번째 작업 만 수행하십시오.
for each element in sarray
if ... then
if this is the first time the above IF statenent was executed ... then
end if
next element
첫 번째로 IF THEN
문이 실행될 때만 수행하고 싶습니다. 나는 내 논리에 많은 문제가있다. 도와주세요!vba : 각 루프에 대해 첫 번째 작업 만 수행하십시오.
var isExecuted = false
for each element in sarray
if ... then
if Not isExecuted Then
--do stuff
isExecuted = true
end if
end if
next element
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
아마이 일을 더 나은 방법이있다 그러나 당신은 참으로 밖으로 시작되고 if 문에서 false로 설정 얻을 부울 변수 first_time을 가질 수 있습니다. 그런 다음 내가 제대로 이해 경우 N 요소를 가질
If first_time = True Then
Stuff
End If
그건 vba가 아니지? –
그것은 의사 코드와 비슷했지만 논리는 동일합니다 ... – user472875
@belisarius : 사실이 질문에 대한 VBA 코드의 유일한 부분입니다. 너는 컴파일되지 않을 것이다. @ CDeutsch도 마찬가지입니다. – GSerg
확인할 수 있습니다, 당신은 첫 번째 요소에 대한 몇 가지 작업을 수행합니다. 그래서 당신이 원하는 것은 프로세서 시간 낭비입니다.
그래서 새로운 부울 변수를 도입하지 않고 논리를 다시 작성하는 것이 좋습니다. 더 빠르고 깨끗합니다. 예를 들면 다음과 같습니다.
배열의 첫 번째 객체가 아니며, 조건을 만족하는 첫 번째 객체입니다. sarray (5)가 If 조건이 참인 첫 번째 것이면 어떻게 될까요? – user472875
당신은 그것이 조건을 만족시키는 첫 번째 요소라고 가정하지만 솔직히 말해서 ... then ... 그리고 사용자가 어떤 조건이 실제로 존재하는지 말하지 않았기 때문에 솔직히 말해서 내 대답은 유효하다고 생각합니다. – Wodzu
루프가 수행해야하는 경우 do stuff 루틴의 마지막 행으로 'Exit For'를 추가하십시오. – ForEachLoop