簡體   English   中英

VBA 中的 For 循環計數器增加 1

[英]For Loop Counter in VBA increments by one extra

我有一個簡單的循環計數器,我希望它會向我發送消息1,2,3...10 相反,我得到1,3,5,7,9 ,但我無法弄清楚這個額外的增量來自哪里。 裁員后我有點生疏了,如果這看起來很簡單,請耐心等待。

這是我的代碼:

Dim x As Integer

For x = 1 To 10
    MsgBox x
    x = x + 1
Next x

大多數編程語言中的for循環通常會自動遞增或迭代某些內容。 在大多數語言中,提供一種指定增量數量的方法也很常見。 這就是 VBA 中的情況—請參閱VBA For...Next 文檔 例如:

For i = 1 to 20 Step 2
 'do something
next i

您的代碼正在遞增x ,而For也在遞增x 如果滿足某些特殊條件,有時您希望在循環內增加計數器,但不是在每個循環上。

如果要手動遞增,則應改用while循環。

Next x行,當在For循環中引用 integer (x) 時,將 x 增加 1

如果您想增加一個以上,或者在負方向上增加,您可以在For行的末尾使用step ,它為Next部分提供方向。 例子:

For x = 10 to 0 step -1
msgbox x
next x

將導致 11 個連續的 msgbox 顯示:

10
9
8
7
6
5
4
3
2
1
0

根據您想要控制 X 的方式,您有不同的選擇:

選項1:

讓 for 循環控制一切並使用“步驟”。 在這種情況下,x 將在每次迭代中增加 y。 你不應該在循環中改變 x 。

Dim y As Integer
y = 1
For x = 1 To 10 step y
   MsgBox x
Next x

選項 2:

如果 X 依賴於循環中發生的某些事情,並且您不希望 for 循環改變 x,您可以將 step 設置為 0。

For x = 1 To 10 step 0
    MsgBox x
    If x Mod 2 = 0 Then
        x = x + 3
    Else
        x = x - 1
    End If
Next x

備選方案

在選項 2 中使用 for 循環而不改變 x 將是不好的做法。 這並沒有錯,因為代碼運行良好,但 while 循環將是一個更好的解決方案。

Dim x As Integer
x = 1
Do While x < 10
    MsgBox x
    If x Mod 2 = 0 Then
        x = x + 3
    Else
        x = x - 1
    End If
Loop

暫無
暫無

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

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