簡體   English   中英

VBA正面For循環,負面步驟

[英]VBA Positive For loop, negative step

Sub Test1()
    Dim a As Integer
    For a = 1 To 3 Step 1 'STEP POSITIVE ONE
    Next
    Debug.Print a
End Sub

收益率為4,如預期。

Sub Test2()
    Dim a As Integer
    For a = 1 To 3 Step -1 'STEP NEGATIVE ONE
    Next
    Debug.Print a
End Sub

為什么踩到“外部”循環會導致1?

為什么VBA步入Test1的界限,但是當它對於Test2的超出部分時停止踩踏?

編輯:除上述之外,運行For a = 1 To 1 Step 1得到2,而For a = 1 To 1 Step -1得到0。

For a = 1 To 2 Step 1得到3,但For a = 1 To 2 Step -1得到1。

Test1 (即For a = 1 To 3 Step 1 ),在第3次循環之后, a增加到4.當它大於3時,它停止並顯示4。

Test2 (即For a = 1 To 3 Step -1 ), a初始設置為1.因為它已經小於3,所以它立即停止並顯示1。

For a = 1 To 1 Step 1a設置為1,其不大於1,因此循環繼續,然后a遞增到2.當2大於1時,它停止並顯示2。

For a = 1 To 1 Step -1a設置為1,不小於1,因此循環繼續,然后a遞減到0.當0小於1時,它停止並顯示0。

For a = 1 To 2 Step 1a設置為1,不大於2,因此循環繼續,然后a遞增到2,然后a遞增到3.當3大於1時,它停止並顯示3。

For a = 1 To 2 Step -1a設置為1,小於2,因此循環停止並顯示1。


這些循環中的實際過程是:

  • 將循環計數器初始化為“起始值”

  • 循環執行以下步驟:

    • 確定循環計數器是否大於“結束值”(如果“步”為正或零)或小於“結束值”(如果“步”為負),如果是,則退出循環

    • 在循環中執行語句

    • 將“step”添加到循環計數器

這些都記錄在MSDN頁面上的“For ... Next Statement”中

暫無
暫無

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

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