Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 循环的条件内部影响循环变量增量_Vba_Loops_Conditional Statements - Fatal编程技术网

Vba 循环的条件内部影响循环变量增量

Vba 循环的条件内部影响循环变量增量,vba,loops,conditional-statements,Vba,Loops,Conditional Statements,问题: 在计算数字序列中的数字时,如何检测何时到达定义为单独索引数组的里程碑,如下所示: Dim扇区作为变体 扇区=数组(0,3,9,14,26,29) 作为整数的Dim i,N N=30 对于i=扇区(0)到N 将m作为整数 m=1 对于m=1到扇区计数 MsgBox(“i,m=“+CStr(i)+”,“+CStr(m)) 如果i>sects(m),则 MsgBox(“i>sects(m)=“+CStr(i)+”、“+CStr(sects(m))+”、“+CStr(m)) 如果结束 下一个m

问题:
在计算数字序列中的数字时,如何检测何时到达定义为单独索引数组的里程碑,如下所示:

Dim扇区作为变体
扇区=数组(0,3,9,14,26,29)
作为整数的Dim i,N
N=30
对于i=扇区(0)到N
将m作为整数
m=1
对于m=1到扇区计数
MsgBox(“i,m=“+CStr(i)+”,“+CStr(m))
如果i>sects(m),则
MsgBox(“i>sects(m)=“+CStr(i)+”、“+CStr(sects(m))+”、“+CStr(m))
如果结束
下一个m
接下来我
期望值:
对于每一个
i
,在第二个消息框之前会弹出几次第一个消息框。
内部循环应该循环,直到
m
命中
sects.Count

观察:
对于上述代码,内部循环始终以
m
等于1结束。
内部循环只运行一次,然后“中断”。请注意,未调用显式中断(退出)

解决方法:
删除If条件。
我试图手动向increment
m
添加一个
Else
子句,但行为没有改变

问题:
我想我对VBA的循环和条件如何工作有一个误解。

在查阅了教程之后,我想不出答案。

不确定您想要做什么,但这似乎更像是您想要的:

Dim sects As Variant, i As Integer, N As Integer, m As Integer

sects = Array(0, 3, 9, 14, 26, 29)
N = 30
For i = 1 To N
  For m = 0 To UBound(sects)
    MsgBox "i, m = " & i & ", " & m
    If i > sects(m) Then
      MsgBox "i > sects(m) = " & i & ", " & sects(m) & ", " & m
    End If
  Next m
Next i

这段代码是如何运行的?我在行的
上得到一个424错误。VBA数组没有AFAIK的
Count
属性。@SJR这很奇怪。我在macOSOK上的PowerPoint 2016中运行它可能有助于添加这些标签。@SJR我认为你是对的。问题是
扇区计数
。我一定用过它,因为其他一些对象有一个Count属性。但运行代码时未引发编译器错误!>>代码运行时没有编译器问题。