2016-04-12 21 views
0

外部Excelシートから2枚、グローバルとして名前を指定したsheet1、データとして名前を指定したsheet2をエクスポートしています。FORループで反復処理をスキップする方法

グローバルシートにはログインの詳細が含まれ、データシートには複数の入力が含まれています。

データシートに複数の行があり、その行をスキップして(pi = 01の場合)、データシートの次の行を実行します。

コード:

case 51 

if processindicator = 01 then 
ExitActionIteration 
Else 
"statement" 
End If 

が、それはすべての繰り返しをスキップしている代わりに、現在の反復の

私たちはあなたのコードのすべてにそれを見ていないので、私は、この事前

答えて

0

で感謝を解決するのに役立ちます伝えるのは難しいです。しかし、おそらく以下の例があなたが探しているものです。基本的に1から100になり、番号51をスキップします。

Public Sub TestSkippingOfAnIteration() 

Dim i As Long 

For i = 1 To 100 
    If i = 51 Then i = i + 1 
    Debug.Print i 
Next i 

End Sub 

問題が解決するかどうかを教えてください。それ以外の場合は、関連するすべてのコードを精緻化して投稿してください。

+0

想像'If​​ i = 100 Then'のように100です。 – trincot

+0

...'その後Exit For'です。しかし、もう一度:なぜ私は1から100まで、そして99ではなく、 'For'を走らせるのでしょうか?結局のところ、すべての例外は動的ではなくVBAのサブコードにハードコードされています。 – Ralph

0

ラップIf文の条件付きコード:

For i = 1 To 10 
    ... 
    If processIndicator <> 1 Then 
     '// do whatever you want here 
    End If 
Next 

または(以下助言に、それは読みやすさとロジックを減少すると)GoToステートメントを使用します。例外はのためにテストする場合

For i = 1 To 10 
    ... 
    If processIndicator = 1 Then 
     GoTo Skip_Line: 
    Else 
     '// do whatever you want here 
    End If 
    ... 

Skip_Line: 
Next 
+0

2番目の方法では、 'Else'を提供する必要はありません。即時の「End If」は少なくともインデントを少なくします。 – trincot

+1

一行の 'If'ステートメントはさらに優れています。ループ内でどのようにナビゲートできるかについて、ロジックを少し明確にしようとしました。これは、作業用コードとして使用するためのものではありません。 –

関連する問題