簡體   English   中英

使用FOR LOOP的EXCEL VBA將忽略步驟+1 LOOP COUNTER

[英]EXCEL VBA using FOR LOOP that will disregard the step +1 LOOP COUNTER

我正在尋找一種解決方案,該解決方案將忽略或從循環計數器中退一步。 這是我的代碼,可以更好地理解。

 Sub DownArrow5_Click()
Dim c As Integer
Dim copyFromRow As Integer

copyFromRow = 1

For c = 1 To 20
   If ActiveSheet.Rows(copyFromRow).Hidden = False And Range("A" & c & "").Value <> "" Then
   'start copy paste
    ActiveSheet.Range("A" & copyFromRow & ", C" & copyFromRow & "").Copy
    Sheets("Sheet2").Select
    ActiveSheet.Range("A1").Select
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
    ActiveCell.Offset(1, 0).Select
    Sheets("Sheet1").Select
    Application.CutCopyMode = False

    Else
        c = 'disregard the +1 for the loop

   End If
 Next c   
End Sub

我不能遞減計數器,因為它將產生負數(-),從而返回無休止的循環。

注意:我需要將20個未隱藏的行復制並粘貼到sheet2。 這就是為什么我需要獲得Max計數器(20)的原因。 這只是我正在研究的簡短代碼。

確實,在For...Next循環中操作循環計數器可能不是一個好主意。 您的代碼段並不清楚為什么你需要做的,但如果你需要使用的值c - 1在某處Else塊,要么使用c - 1 (不分配c ),或指定c - 1到另一個變量:

Sub DownArrow5_Click()
    Dim c As Integer, d As Integer

    For c = 1 To 20
        If (condition) then
            'do stuff here

        Else
            d = c - 1
            'some more stuff here using d

        End If
    Next

End Sub

UPDATE

既然您已經編輯了更多詳細信息的代碼,我想您正在尋找的是這樣的東西:

While c <= 20

    If Not ActiveSheet.Rows(copyFromRow).Hidden _
       And Range("A" & c).Value <> vbNullString Then

        'do your stuff
        c = c + 1

    End If

Wend

請注意,VB有幾個循環結構也可以很好地起作用-並且任何條件在20次迭代后得出False條件都可以,因此,只要使用您發現更具可讀性的內容即可:

Do Until c = 21 ' until c = 20 would make it 19 iterations since c starts at 1
   ...
   c = c + 1
Loop

Do While Not c > 20
   ...
   c = c + 1
Loop

使用另一種類型的循環:

c = 1
Do
    If (condition) Then
        'do stuff

         c = c+1  'increment your counter variable
    Else:
        'presumably do nothing, i.e., "Disregard" the loop.
        ' do NOT increment the counter variable in the Else block
    End If

Loop While Not c > 20

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM