[英]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.