2017-09-14 9 views
1

私はそれぞれのページ区切りを見つけていますが、私が列を逆ループしていますが、私が見つけた最初の条件をスキップしたいのです。ここで私の意味は次のとおりです。逆ループですが、最初の条件はスキップしますか?

Dim i As Long 
Dim pb As Variant 
Dim ws As Worksheet 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

For Each pb In ws.HPageBreaks 
    For i = pb.Location.Row To 1 Step -1 
     If Cells(i, 1).Value = 1 Then '<<--- HOW TO SKIP THE FIRST "1" I FIND BUT KEEP THE LOOP GOING BACKWARD? 
      Dim counter As Long 
      counter = counter + 1 
      If counter = 1 Then '<<-- certainly not working... 
       Exit For 
      Else 
       'Do Something 
      End If 
     End If 
    Next 
Next 

enter image description here

EDIT:私が行うために必要なすべてのコードのための出口を削除し、それが仕事!

+0

コードが正しいように見えますが、それは動作しません。 – Dave

+0

私が最初に "1"を見つけたら、それをスキップして、代わりに2番目の "1"を探したいと思っています。 –

+0

単に 'Exit For'を削除するだけで十分ですが、' Dim counter'行を動かす必要があります。そうでなければ常に1になります。これは2つの 'For'文の間であるか、 –

答えて

0

あなたはループがExit Forを取り除く続けるとif文

If counter <> 1 Then 
    'Do something 
End If 

にあなたを変更したい場合、あなたは完全なループに滞在。

+0

"1"を見つける最初のループをスキップしたいだけです。何かをしなさい。 –

0

見つかった1のカウンタを追加し、見つかったときにそのカウンタを増やします。 counter> 1の場合はそれを読み取り、それ以外の場合は無視します。

私の電話では、後で特定のコード例を追加します。

0

私が正しく理解していれば、カウンターの初期化の場所を変更して、カウンターが1より大きいかどうかを確認するだけです。私は各ページ区切りを最初にスキップすると仮定しています。

Dim i As Long 
Dim pb As Variant 
Dim ws As Worksheet 
Set ws = ThisWorkbook.Worksheets("Sheet1") 

For Each pb In ws.HPageBreaks 
    Dim counter As Long = 0 ' Move this count outside the internal loop 
    For i = pb.Location.Row To 1 Step -1 
     If foundFirst AndAlso Cells(i, 1).Value = 1 Then '<<--- HOW TO SKIP THE FIRST "1" I FIND BUT KEEP THE LOOP GOING BACKWARD? 
      counter = counter + 1 
      'Only do it once your counter is above 1 
      If counter <> 1 Then    
       'Do Something 
      End If 

     End If 
    Next 
Next 
関連する問題