VBA: сделать что-то только на первом для каждого цикла - PullRequest
1 голос
/ 19 ноября 2010
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. У меня много проблем с моей логикой. пожалуйста, помогите!

Ответы [ 4 ]

4 голосов
/ 19 ноября 2010
var isExecuted = false
for each element in sarray
  if ... then
     if Not isExecuted Then
        --do stuff
       isExecuted = true
     end if
  end if
next element
2 голосов
/ 19 ноября 2010

Если я вас правильно понимаю, у вас есть N элементов, и вы хотите выполнить какую-то операцию только для первого элемента. Делать так, как вы хотите, - пустая трата процессорного времени.

Так что я бы предложил переписать вашу логику без введения новой логической переменной. Это чище и быстрее. Примерно так, например:

Dim intCount As Integer    

If (some condition) Then
  DoSomething with sarray(0)
For intCount = 1 To sarray.Length
     //Do something
Next intCount
2 голосов
/ 19 ноября 2010

Возможно, есть лучший способ сделать это, но вы можете иметь логическую переменную first_time, которая будет начинаться как true и будет установлена ​​в false в инструкции if.Затем вы можете проверить

If first_time = True Then
   Stuff
End If
2 голосов
/ 19 ноября 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...