2017-09-14 65 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

編輯:所有我需要做的是去除退出代碼和它的工作!

+0

代碼看起來是正確的 - 這是什麼不工作? – Dave

+0

當我第一次找到一個「1」時,我想跳過這個並找到第二個「1」。 –

+0

只需簡單地刪除'Exit For'就足夠了 - 但是您還需要將'Dim counter'行向上移動,否則它總是等於1.它應該在兩個For語句之間或第一個之前,不知道你正在努力完成什麼 –

回答

0

如果你想繼續循環擺脫Exit For,改變你的if語句

If counter <> 1 Then 
    'Do something 
End If 

然後你留在充分循環。

+0

我只是想跳過第一個找到「1」的循環,但我想找到下一個「1」和做一點事。 –

0

爲找到的1找到一個計數器,並在找到時加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