N = 3
For i = 3 To UBound(avCAALData, 1)
If avCAALData(i, 4) = "" Or avCAALData(i, 4) = " " Then
Exit For
End If
N = N + 1
Next
i = 3: J = 0: K = 0
NextI:
While (i > 2 And i < N - 2 - K)
If avCAALData(i, 2) = avCAALData(i + 1, 2) And avCAALData(i, 3) = avCAALData(i + 1, 3) Then
avCAALData(i, 4) = Asc(avCAALData(i, 4)) + Asc(avCAALData(i + 1, 4))
For J = i + 1 To N - K
avCAALData(J, 1) = avCAALData(J + 1, 1)
avCAALData(J, 2) = avCAALData(J + 1, 2)
avCAALData(J, 3) = avCAALData(J + 1, 3)
avCAALData(J, 4) = avCAALData(J + 1, 4)
K = K + 1
Next
GoTo NextI
End If
i = i + 1
Wend
完整代码太多了,贴不了,主要就是while里面的循环问题,测试时只执行力一次循环,我把i赋值为3就是为了保证循环能进行下去,K是用来保证执行循环时,不用把后面的不要的项继续执行循环,
追答关键还在N和K的值为多少,我理解代码里N的值就是UBound(avCAALData, 1)的值,
要进入While循环,N最小要=4,然而循环里的
For J = i + 1 To N - K 中N-K以及For J循环里的K=K+1决定了K的值,如果N=6,则For J 循环完成后,K=3, 则While循环的入口条件i < N - 2 - K 带入值为3<6-2-3,条件不成立,所以While循环只执行了一次;
如果N=7,则K=4,i < N - 2 - K 带入值为3<7-2-4,条件不成立,while循环还是执行一次,所以不过N值怎么变化,只有进入While循环了,只能执行一次。
希望你看明白了吧
关键还在N和K的值为多少,我理解代码里N的值就是UBound(avCAALData, 1)的值,
要进入While循环,N最小要=4,然而循环里的
For J = i + 1 To N - K 中N-K以及For J循环里的K=K+1决定了K的值,如果N=6,则For J 循环完成后,K=3, 则While循环的入口条件i < N - 2 - K 带入值为3<6-2-3,条件不成立,所以While循环只执行了一次;
如果N=7,则K=4,i < N - 2 - K 带入值为3<7-2-4,条件不成立,while循环还是执行一次,所以不过N值怎么变化,只要进入While循环了,只能执行一次。
希望你看明白了吧
VB数组中的While 循环问题,while循环为什么只执行一次呢???_百度...
现有的代码关键在avCAALData数组,他的一维上限值UBound(avCAALData, 1)决定了N的值,而While入口的条件就在于第二个条件了,因为第一个条件i>2是肯定成立的,上面给赋值了i=3.第二个条件i<N-2-K,因为在While循环了没有改变N的值,所有条件成立与否在于K的值。再有,如果While里的if条件不成立...
VB中while与for循环的区别
从使用目的来看,for循环主要用于在已知循环次数的情况下执行重复操作,如遍历数组或集合时,它能提供更精确的控制,避免不必要的迭代。而while循环则更加灵活,用于重复执行一段代码直到某个条件被满足,适用于不确定循环次数的情况。最后,我们对比它们的语法结构。for循环的语法为:for (变量 = 开始值变...
VB循环语句问题!!急求!!!
如果你是问这个,那么,控制语句入口处的语句执行次数一般情况下,是比循环体内的语句执行次数多1次,出口处的语句与循环体内的语句执行次数是一样的,因为在进入循环体的时候,需要做判断,符合的就进入循环,不符合的就跳过循环部分,直接执行循环语句之后的。比如for next循环,for 语句肯定会被多执行...
vb中实现循环的三个语句
1、do while...loop:当条件为True时循环,,在进入循环之前检查条件。2、do...loop while:当条件为True循环,在循环至少运行一次后检查条件。3、do until...loop:当条件为false循环,在进入循环之前检查条件。4、do..loop until:当条件为false循环,在循环至少运行一次后检查条件。5、While...Wend...
VB中的循环语句有哪些?
4、do.. loop until:当条件为false循环,在循环至少运行一次后检查条件。5、While...Wend: 当条件为Ture时循环。6、for...next:指定循环次数,使用计数器重复运行语句。7、for Each...next:对于集合中的每项或数组中的元素,重复执行每个语句。8、for Each...in:从一个集合中取出每一个元素。9...
vb的几种循环结构?
在下面的 Do...Loop 循环中,只要 condition 为 True 就执行 statements。Do While condition statements ..Loop 2.2 第二种用法 Do...Loop 语句的另一种演变形式是先执行语句,然后在每次执行后测试 condition。这种形式保证 statements 至少执行一次:Do statements Loop While condition 注:其它两种...
...在VB中的Do While循环中有两个For循环,有些搞不懂,请指教一下_百度...
For 循环没有指定步长时,默认为+1。也就是上面代码中的iLoop每循环一次就自动加1。
VB中Do while 嵌套使用,编译时提示,Loop找不到Do
论代码对齐的重要性。。。FOR 少了 next Do While (RecDataCount < 90) MSComm.Output = RecStart() Do While MSComm.CommEvent = comEvReceive ByteReceiveData() = MSComm.Input For i = 0 To 1 Frame(i) = ByteReceiveData(i) If Len(Hex(Frame(i))) = 1 Then ...
for 循环与while循环的区别
while循环的结构表达式为:while(表达式){循环体}。二、执行时判断方式不同 do-while循环将先运行一次,因为经过第一次do循环后,当检查条件表达式的值时,其值为 不成立时而会退出循环。保证了至少执行do{ }内的语句一次。for循环执行的中间循环体可以为一个语句,也可以为多个语句,当中间循环体只有...
VBS 怎么判断4个数中,有三个一样,或是有两个一样,或是各不相同?
loop while ctr<3 功能是一样的, 为什么要放在loop后面呢? 你把ctr的值改成3就知道了, while在do后面的程序会直接退出, 而在loop后面 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他类似问题 2013-08-18 vbs作答:有1,2,3,4个数字,能组成多少个互不相同且无... 2010-04-22 4位数字中有...