2010-11-19 13 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

ループがすべて必要な場合は、「Exit For」を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

は、おそらくこれを行うには良い方法はありますが、あなたは、真アウト開始し、if文でfalseに設定されますブール変数FIRST_TIMEを持つことができます。その後、私が正しくあなたを理解していればあなたはN個の要素を持っている、とあなたが最初の要素だけのためにいくつかの操作を実行したい

If first_time = True Then 
    Stuff 
End If 
+0

それはvbaではないですか? –

+0

それはもっと擬似コードに似ていましたが、ロジックは同じです... – user472875

+0

@belisarius:これはこれまでのところ、この質問のVBAコードの唯一の部分です。あなたはコンパイルされません。また、@ CDeutschもそうではありません。 – GSerg

2

を確認することができます。だからあなたがしたいようにこれを行うには、プロセッサ時間の無駄です。

新しい論理変数を導入せずにロジックを書き直すことをお勧めします。よりクリーンで高速です。たとえば、次のようなものがあります。

Dim intCount As Integer  

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

これは配列の最初のオブジェクトではなく、条件を満たす最初のオブジェクトです。 sarray(5)がIf条件がTrueの最初のものであればどうなるでしょうか? – user472875

+1

あなたはそれが条件を満たしている最初の要素だと考えていますが、正直なところ、何かが... ... thenの間に置かれる可能性があります。 – Wodzu

関連する問題